
Herramienta OSINT: Genera listas de nombres de usuario para empresas en LinkedIn
Herramienta OSINT: Genera listas de nombres de usuario a partir de empresas en LinkedIn.
Esto es un web scraper puro, no se requiere clave API. Usas tu nombre de usuario y contraseña válidos de LinkedIn para iniciar sesión, y creará varias listas de posibles formatos de nombre de usuario para todos los empleados de una empresa a la que apuntes.
Esto es lo que obtienes:
Opcionalmente, la herramienta añadirá @dominio.xxx a los nombres de usuario.

No me culpes si tu cuenta de LinkedIn es limitada por tasa, o incluso baneada. Esta es una herramienta de investigación de seguridad - úsala solo después de leer el código y entender completamente lo que hace.
No he sabido de ningún baneo de cuentas desde que se escribió la herramienta, pero la limitación de tasa ocasionalmente se activa cuando se alcanza el "límite de búsqueda comercial". Eso ha sido temporal hasta ahora (medido mensualmente).
Instala uv, luego desde la raíz del repositorio ejecuta:
uv sync
Esto crea un entorno virtual e instala todas las dependencias automáticamente. Ejecuta la herramienta con:
uv run python linkedin2username.py -c empresaobjetivo
También necesitarás Chrome, Chromium o Firefox instalados en rutas típicas que Selenium pueda descubrir. Se abrirá un navegador web temporalmente para manejar el inicio de sesión.
usage: linkedin2username.py [-h] -c COMPANY [-n DOMAIN] [-d DEPTH]
[-s SLEEP] [-x PROXY] [-k KEYWORDS] [-g] [-o OUTPUT]
Herramienta OSINT para generar listas de nombres de usuario probables a partir de la página de LinkedIn de una empresa determinada.
Esta herramienta puede fallar cuando LinkedIn cambia su sitio.
Por favor, abre issues en GitHub para reportar cualquier inconsistencia.
argumentos opcionales:
-h, --help muestra este mensaje de ayuda y sale
-c COMPANY, --company COMPANY
Nombre de la empresa exactamente como aparece en la URL de la página de perfil de la empresa en LinkedIn.
-n DOMAIN, --domain DOMAIN
Añade un nombre de dominio a la salida de nombres de usuario.
[ejemplo: "-n targetco.com" generaría [email protected]]
-d DEPTH, --depth DEPTH
Profundidad de búsqueda (cuántos bucles de 25). Si no se establece, intentará obtener todos.
-s SLEEP, --sleep SLEEP
Segundos de espera entre bucles de búsqueda. Por defecto 0.
-x PROXY, --proxy PROXY
Servidor proxy a usar. ADVERTENCIA: DESHABILITARÁ LA VERIFICACIÓN SSL.
[ejemplo: "-p https://localhost:8080"]
-k KEYWORDS, --keywords KEYWORDS
Filtrar resultados por una lista de palabras clave separadas por comas.
Hará un bucle separado para cada palabra clave,
potencialmente evitando el límite de 1.000 registros.
[ejemplo: "-k 'ventas,recursos humanos,tecnología de la información']
-g, --geoblast Intenta evitar el límite de búsqueda de 1.000 registros ejecutando
múltiples búsquedas divididas por regiones geográficas.
-o OUTPUT, --output OUTPUT
Directorio de salida, por defecto li2u-output
Necesitarás proporcionar a la herramienta el nombre de la empresa de LinkedIn. Puedes encontrarlo mirando la URL de la página de la empresa. Debería ser algo como https://linkedin.com/company/empresaobjetivo. Puede o no ser tan simple como el nombre exacto de la empresa.
Aquí tienes un ejemplo para obtener todos los empleados de empresaobjetivo:
$ python linkedin2username.py -c empresaobjetivo
Aquí tienes un ejemplo para obtener una lista más corta y añadir el nombre de dominio @empresaobjetivo.com:
$ python linkedin2username.py -c empresaobjetivo -d 5 -n 'empresaobjetivo.com'
Usa una cuenta con muchas conexiones, de lo contrario obtendrás resultados deficientes. Agregar un par de conexiones en la empresa objetivo debería ayudar: esta herramienta funciona hasta conexiones de tercer grado. Ten en cuenta que LinkedIn limitará los resultados de búsqueda a un máximo de 1000 empleados. Puedes usar las funciones '--geoblast' o '--keywords' para evitar este límite. Mira la ayuda a continuación para más detalles.
Cuando LinkedIn cambia cosas, la herramienta puede fallar. La API utilizada aquí no está documentada, y puede requerir algunos ajustes para que vuelva a funcionar. Por favor, abre issues si notas algo extraño.
Puedes verificar que Selenium funciona en tu máquina de esta manera:
$ python3
from selenium import webdriver
driver = webdriver.Firefox() # o webdriver.Chrome()
driver.get("https://linkedin.com/login")
Puedes probar la bandera --proxy para inspeccionar el tráfico con Burp. Actualmente, no está inspeccionando los inicios de sesión desde el navegador Selenium, como se puede ver claramente lo que está sucediendo allí.
Esta es una herramienta de investigación de seguridad. Úsala solo donde se haya otorgado permiso explícito del propietario de la red.