
⛏️ El motor de extracción detrás de Maigret: convierte cualquier URL de perfil en un registro OSINT estructurado en más de 150 sitios
# socid_extractor
[](https://pypi.org/project/socid-extractor/)
[](https://pepy.tech/project/socid-extractor)
[](https://pepy.tech/project/socid-extractor)
[](https://github.com/soxoj/socid-extractor/blob/master/LICENSE)
[](https://github.com/soxoj/socid-extractor/actions/workflows/python-package.yml)
[](https://github.com/soxoj/socid-extractor/stargazers)
[](https://github.com/soxoj/socid-extractor/network/members)
> Convierte cualquier página de perfil pública en un registro de cuenta estructurado: nombres de usuario, nombres para mostrar, biografías, avatares, ubicaciones, fechas de alta, recuentos de seguidores, enlaces externos y los **identificadores internos estables** que fijan de forma única una cuenta a través de cambios de nombre, rediseños y eliminaciones.
`socid_extractor` analiza páginas HTML y respuestas de API de más de 250 esquemas y devuelve un diccionario plano y legible por máquina con los campos de la cuenta. No requiere claves de API ni un navegador headless: basta con una única llamada a función sobre el texto de la respuesta.
**Por qué es útil**
- **IDs estables entre servicios.** Obtén el GAIA ID (Google), el UID de Facebook, el Public ID de Yandex, el pk de Instagram y docenas más: valores que sobreviven a los cambios de nombre de usuario y te permiten correlacionar cuentas entre filtraciones, archivos e índices de motores de búsqueda.
- **Una interfaz uniforme.** La misma llamada a `extract()` para Instagram, GitHub, VK, Reddit, Substack, Bluesky, TikTok: sin código de integración específico por plataforma de tu parte.
- **Ontología de campos.** [Nombres de campo normalizados](https://github.com/soxoj/socid-extractor/blob/master/FIELDS.md) entre plataformas (`username`, `fullname`, `created_at`, `is_verified`, …) para que las canalizaciones posteriores no necesiten 130 mapeos.
- **Probado en combate.** Impulsa [Maigret](https://github.com/soxoj/maigret) y otras herramientas OSINT.
## Instalación
Python: 3.10+.
```sh
pip install socid-extractor
```
Para una instalación limpia de la CLI en una estación de trabajo:
```sh
pipx install socid-extractor
```
La última versión de desarrollo:
```sh
pip install -U git+https://github.com/soxoj/socid-extractor.git
```
## Inicio rápido
**Como CLI:**
```sh
$ socid_extractor --url https://www.deviantart.com/muse1908
country: France
created_at: 2005-06-16 18:17:41
gender: female
username: Muse1908
website: www.patreon.com/musemercier
links: ['https://www.facebook.com/musemercier', 'https://www.instagram.com/muse.mercier/', 'https://www.patreon.com/musemercier']
tagline: Nothing worth having is easy...
```
**Como biblioteca de Python:**
```python
import requests
import socid_extractor
r = requests.get('https://www.patreon.com/annetlovart')
print(socid_extractor.extract(r.text))
# {'patreon_id': '33913189', 'patreon_username': 'annetlovart',
# 'fullname': 'Annet Lovart',
# 'links': "['https://www.facebook.com/322598031832479', ...]"}
```
**Consejo — ejecuciones por lotes:** pasa `--skip-fetch-if-no-url-hint` para omitir la solicitud HTTP cuando la URL no coincida con ninguna pista de sitio conocida (más rápido, pero puede omitir motores genéricos como las plantillas de foro):
```sh
$ socid_extractor --url https://example.com/foo --skip-fetch-if-no-url-hint
```
## Sitios compatibles
[**Más de 250 esquemas**, que cubren aproximadamente 2.000 de los sitios que verifica Maigret — consulta METHODS.md para ver la lista completa.](https://github.com/soxoj/socid-extractor/blob/master/METHODS.md)
Una muestra no exhaustiva:
- **Redes principales:** Facebook (páginas de usuario y de grupo), Instagram, VK.com, OK.ru, Reddit, TikTok, Bluesky, Tumblr, Flickr
- **Ecosistema de Google:** contribuciones en Google docs/maps (requiere cookies), Google Play, YouTube
- **Mail.ru:** página principal de usuario de my.mail.ru, foto, vídeo
- **Plataformas de desarrollo y escritura:** GitHub, Stack Overflow (HTML + API), LeetCode, Hashnode, Medium, Substack, Paragraph, WordPress.org, Virgool
- **Foros (detectores universales):** Discourse, MediaWiki / wikis de Fandom, Mastodon
- **Nichos y verticales:** Chess.com, Roblox, MyAnimeList, Scratch, Wikipedia, DailyMotion, SlideShare, Weebly, Calendly, Amazon Author, Boosty, Warpcast (Farcaster), Fragment (TON/Telegram), Rarible, CSSBattle, lnk.bio, Spatial, TwitchTracker, Max (max.ru)
…y muchos otros.
Para ver ejemplos de datos, consulta [`tests/test_e2e.py`](https://github.com/soxoj/socid-extractor/blob/master/tests/test_e2e.py); para la lógica de análisis, consulta [`socid_extractor/schemes.py`](https://github.com/soxoj/socid-extractor/blob/master/socid_extractor/schemes.py); para la ontología de campos, consulta [FIELDS.md](https://github.com/soxoj/socid-extractor/blob/master/FIELDS.md).
## Casos de uso
- **Pivotar desde un perfil hacia todo lo que puedas ver.** Una sola llamada devuelve la información visible más los IDs internos ocultos que la plataforma utiliza entre bastidores. Lectura de referencia: [Week in OSINT — Getting a grasp on Google IDs](https://medium.com/week-in-osint/getting-a-grasp-on-googleids-77a8ab707e43).
- **Rastrear cuentas a través de cambios de nombre, rediseños y eliminaciones.** Los IDs estables (GAIA, FB UID, Yandex Public ID, Instagram pk, …) te permiten volver a identificar a la misma persona incluso cuando todos los campos visibles han cambiado. Referencia: [Aware Online — User IDs in social-media investigations](https://www.aware-online.com/en/importance-of-user-ids-in-social-media-investigations/).
- **Buscar por UID entre servicios.** Una vez que tienes un identificador estable puedes pivotar hacia:
- bases de datos SQL / filtradas (volcados de foros, datos de brechas) donde el UID es la clave de unión,
- índices de Google / Yandex / archive.org que capturaron URLs que contenían el UID.
- **Alimentar herramientas OSINT posteriores.** Un registro normalizado es mucho más fácil de ingerir que scrapers específicos de cada sitio — lo usan [Maigret](https://github.com/soxoj/maigret) y herramientas similares para enriquecimiento.
## Uso comercial
El `socid_extractor` de código abierto tiene licencia MIT y es gratuito para uso comercial sin restricciones — pero los analizadores de páginas se rompen con el tiempo a medida que las plataformas cambian su HTML y sus API, y necesitan mantenimiento activo.
Para un uso comercial serio — una API de extracción alojada, o el mantenimiento de los analizadores de los que depende tu producto — ponte en contacto: 📧 [email protected]
- API de extracción — integra `socid_extractor` en tu producto
## Clasificación SOWEL
Se corresponde con las siguientes técnicas de [SOWEL](https://sowel.soxoj.com/):
- [SOTL-1.4. Analyze Internal Identifiers](https://sowel.soxoj.com/internal-identifiers)
- [SOTL-11.1. Check Outdated And Unused Functionality](https://sowel.soxoj.com/outdated-unused-functionality)
## Herramientas que usan socid_extractor
- [**Maigret**](https://github.com/soxoj/maigret) — potente verificador de nombres que genera un informe con toda la información disponible de las cuentas encontradas en más de 3000 sitios.
- [**TheScrapper**](https://github.com/champmq/TheScrapper) — extrae correos electrónicos, números de teléfono y cuentas de redes sociales de un sitio web.
- [**InfoHunter**](https://github.com/sweetnight19/InfoHunter) — herramienta OSINT de código abierto para buscar, recopilar y analizar información en línea.
- [**YaSeeker**](https://github.com/HowToFind-bot/YaSeeker) — recopila toda la información disponible sobre una cuenta de Yandex mediante login/email.
- [**Marple**](https://github.com/soxoj/marple) — extrae los resultados de motores de búsqueda para un nombre de usuario determinado.
## Véase también
- [**ShareTrace**](https://github.com/soxoj/sharetrace) — la imagen espejo de este proyecto: `socid_extractor` lee una página de perfil, ShareTrace toma un *enlace para compartir* (TikTok, Instagram, ChatGPT, Discord, Telegram y más) y recupera quién lo creó o lo reenvió, decodificando algunos tokens de compartir sin conexión. No hay nada que instalar si solo quieres probarlo: el [bot de Telegram](https://t.me/sharetrace_bot?start=c29jaWQtZXh0cmFjdG9yOnJlYWRtZQ) gestionado por la comunidad o la [interfaz web](https://share.whopostedwhat.com/).
## Pruebas
Instala los extras de prueba desde [`pyproject.toml`](https://github.com/soxoj/socid-extractor/blob/master/pyproject.toml) y luego ejecuta pytest:
```sh
pip install '.[test]' # pytest, pytest-rerunfailures, pytest-xdist
python3 -m pytest tests/test_e2e.py -n 10 -k 'not cookies' -m 'not github_failed and not rate_limited'
```
Usa `pip install '.[dev]'` en su lugar si también quieres flake8 / mypy / black (el conjunto completo usado por CI).
**Cada nuevo esquema debe tener una prueba e2e** en `tests/test_e2e.py` que acceda a una URL/API real. También se requieren pruebas unitarias con fixtures en línea (`tests/test_socid_improvements.py`), pero no sustituyen la cobertura e2e. Consulta [docs/testing-and-ci.md](https://github.com/soxoj/socid-extractor/blob/master/docs/testing-and-ci.md) para más detalles.
La documentación para desarrolladores (arquitectura, módulos, CI) se encuentra en [docs/](https://github.com/soxoj/socid-extractor/blob/master/docs).
## Contribuir
Consulta la [guía de contribución](https://github.com/soxoj/socid-extractor/blob/master/CONTRIBUTING.md) si quieres añadir un nuevo esquema o corregir algo.