Pues, volvemos a los posts. Esta vez, nada interesante, pero eh, creo que aprenderemos algo al final.
Hace un tiempo, a inicios del año, empecé a escrapear eventos de GitHub para... sinceramente, no tengo idea. El punto: Acá llegaban los payloads de cuando subes cosas a GitHub, y si usas Git; me estás dando tu correo.
El funcionamiento para poder escrapear todo esto es de lo más simple, por eso tantas empresas hacen esto para poder reclutar programadores. En el fondo tendrás una base de datos y te pones a hacer peticiones cada cierto tiempo. Iteras por cada log que haya, buscas la llave del correo y lo guardas junto al nombre. Después el ratelimit es de lo más sencillo de bypassear, pero fui respetuoso y simplemente esperé un rato.
Un pequeño temor era el de los correos inexistentes, ya sean generados por un servicio, y no te sirvan (como el típico no-reply de GitHub), son inválidos o dejaron de existir.
Me las arreglé con el formato de los correos de una forma muy simple: la suma del total de arrobas y de puntos, es 2. No quiero subdominios raros, ni cosas mal formateadas, no es infalible,
pero me ha funcionado. Después, podría añadir una función que valide la existencia del correo (Existencia != Formato
, pero si el formato es inválido no existe), pero sinceramente, que flojera.
Bueno, ya dejando de lado el funcionamiento: No uses tu correo real en Git, usa el correo que GitHub te da. Y otra cosa que no mencione al inicio, cuida tus tokens
No puedo afirmar que estos tokens tengan suficientes permisos para poder ver los correos, repos privados, pero es un problema que existe. Además, al usar un token en las peticiones a las APIs, tienes un ratelimit más alto, y con un proxy o dos, esto es un abuso gigante al servicio. Todo en teoría, obvio. Otro problema, más pequeño, es que si una empresa usa GitHub, podrás listar empleados, y son programadores, pero vaya ataque de phishing que puedes intentar.
No son todos los correos con ese dominio, probablemente, pero son un par. Intente usar gmail para el filtro, pero casi me crashea Chrome.
Bueno, eso es todo. Recuerda lo que dije. Adiós.