
⛏️ Il motore di estrazione alla base di Maigret: trasforma qualsiasi URL di profilo in un record OSINT strutturato su oltre 150 siti
# 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)
> Trasforma qualsiasi pagina di profilo pubblica in un record di account strutturato — username, nomi visualizzati, bio, avatar, località, date di iscrizione, numero di follower, link esterni e gli **identificatori interni stabili** che individuano in modo univoco un account attraverso rinomine, ridisegni e cancellazioni.
`socid_extractor` analizza pagine HTML e risposte API da oltre 250 schemi e restituisce un dizionario piatto e leggibile da macchina dei campi dell'account. Nessuna chiave API richiesta, nessun browser headless — basta una singola chiamata di funzione sul testo della risposta.
**Perché è utile**
- **ID stabili tra servizi.** Ottieni GAIA ID (Google), Facebook UID, Yandex Public ID, Instagram pk e dozzine di altri — valori che sopravvivono ai cambi di username e ti permettono di correlare account tra leak, archivi e indici dei motori di ricerca.
- **Un'interfaccia uniforme.** La stessa chiamata `extract()` per Instagram, GitHub, VK, Reddit, Substack, Bluesky, TikTok — nessun codice di adattamento per piattaforma da parte tua.
- **Ontologia dei campi.** [Nomi di campo normalizzati](https://github.com/soxoj/socid-extractor/blob/master/FIELDS.md) tra le piattaforme (`username`, `fullname`, `created_at`, `is_verified`, …) così le pipeline a valle non necessitano di 130 mappature.
- **Collaudato sul campo.** Alimenta [Maigret](https://github.com/soxoj/maigret) e numerosi altri strumenti OSINT.
## Installazione
Python: 3.10+.
```sh
pip install socid-extractor
```
Per un'installazione CLI pulita su una workstation:
```sh
pipx install socid-extractor
```
La versione di sviluppo più recente:
```sh
pip install -U git+https://github.com/soxoj/socid-extractor.git
```
## Avvio rapido
**Come 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...
```
**Come libreria 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', ...]"}
```
**Suggerimento — esecuzioni batch:** passa `--skip-fetch-if-no-url-hint` per saltare la richiesta HTTP quando l'URL non corrisponde a nessun suggerimento di sito noto (più veloce, ma potrebbe saltare motori generici come i template di forum):
```sh
$ socid_extractor --url https://example.com/foo --skip-fetch-if-no-url-hint
```
## Siti supportati
[**Oltre 250 schemi**, che coprono circa 2.000 dei siti verificati da Maigret — consulta METHODS.md per l'elenco completo.](https://github.com/soxoj/socid-extractor/blob/master/METHODS.md)
Un campione non esaustivo:
- **Principali network:** Facebook (pagine utente e gruppo), Instagram, VK.com, OK.ru, Reddit, TikTok, Bluesky, Tumblr, Flickr
- **Ecosistema Google:** contributi Google docs/maps (richiede cookie), Google Play, YouTube
- **Mail.ru:** pagina principale utente my.mail.ru, foto, video
- **Piattaforme di sviluppo / scrittura:** GitHub, Stack Overflow (HTML + API), LeetCode, Hashnode, Medium, Substack, Paragraph, WordPress.org, Virgool
- **Forum (rilevatori universali):** Discourse, MediaWiki / wiki Fandom, Mastodon
- **Di nicchia / verticali:** 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)
…e molti altri.
Per esempi di dati, consulta [`tests/test_e2e.py`](https://github.com/soxoj/socid-extractor/blob/master/tests/test_e2e.py); per la logica di parsing, consulta [`socid_extractor/schemes.py`](https://github.com/soxoj/socid-extractor/blob/master/socid_extractor/schemes.py); per l'ontologia dei campi, consulta [FIELDS.md](https://github.com/soxoj/socid-extractor/blob/master/FIELDS.md).
## Casi d'uso
- **Passa da un profilo a tutto ciò che è visibile.** Una singola chiamata restituisce le informazioni visibili più gli ID interni nascosti che la piattaforma utilizza dietro le quinte. Lettura di approfondimento: [Week in OSINT — Getting a grasp on Google IDs](https://medium.com/week-in-osint/getting-a-grasp-on-googleids-77a8ab707e43).
- **Traccia gli account attraverso rinomine, ridisegni ed eliminazioni.** Gli ID stabili (GAIA, FB UID, Yandex Public ID, Instagram pk, …) ti permettono di re-identificare la stessa persona anche quando ogni campo visibile è cambiato. Approfondimento: [Aware Online — User IDs in social-media investigations](https://www.aware-online.com/en/importance-of-user-ids-in-social-media-investigations/).
- **Cerca tramite UID tra servizi diversi.** Una volta ottenuto un identificatore stabile puoi passare a:
- database SQL / trapelati (dump di forum, dati di violazioni) in cui l'UID è la chiave di join,
- indici Google / Yandex / archive.org che hanno catturato URL contenenti l'UID.
- **Alimenta strumenti OSINT a valle.** Un record normalizzato è molto più facile da importare rispetto a scraper specifici per singolo sito — utilizzato da [Maigret](https://github.com/soxoj/maigret) e strumenti simili per l'arricchimento.
## Uso commerciale
`socid_extractor` open-source è distribuito con licenza MIT ed è libero per uso commerciale senza restrizioni — ma i parser delle pagine si rompono nel tempo man mano che le piattaforme modificano il loro HTML e le loro API, e richiedono manutenzione attiva.
Per un uso commerciale serio — un'API di estrazione ospitata, o la manutenzione dei parser da cui dipende il tuo prodotto — contattaci: 📧 [email protected]
- API di estrazione — integra `socid_extractor` nel tuo prodotto
## Classificazione SOWEL
Corrisponde alle seguenti tecniche [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)
## Strumenti che utilizzano socid_extractor
- [**Maigret**](https://github.com/soxoj/maigret) — potente namechecker che genera un report con tutte le informazioni disponibili dagli account trovati su oltre 3000 siti.
- [**TheScrapper**](https://github.com/champmq/TheScrapper) — estrae email, numeri di telefono e account di social media da un sito web.
- [**InfoHunter**](https://github.com/sweetnight19/InfoHunter) — strumento OSINT open-source per cercare, raccogliere e analizzare informazioni online.
- [**YaSeeker**](https://github.com/HowToFind-bot/YaSeeker) — raccoglie tutte le informazioni disponibili su un account Yandex tramite login/email.
- [**Marple**](https://github.com/soxoj/marple) — estrae i risultati dei motori di ricerca per un dato username.
## Vedi anche
- [**ShareTrace**](https://github.com/soxoj/sharetrace) — l'immagine speculare di questo progetto: `socid_extractor` legge una pagina di profilo, ShareTrace prende un *link di condivisione* (TikTok, Instagram, ChatGPT, Discord, Telegram e altri) e risale a chi lo ha creato o inoltrato, decodificando alcuni token di condivisione offline. Nulla da installare se vuoi solo provarlo: il [bot Telegram](https://t.me/sharetrace_bot?start=c29jaWQtZXh0cmFjdG9yOnJlYWRtZQ) gestito dalla community o la [web UI](https://share.whopostedwhat.com/).
## Testing
Installa gli extra di test da [`pyproject.toml`](https://github.com/soxoj/socid-extractor/blob/master/pyproject.toml), poi esegui 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]'` invece se vuoi anche flake8 / mypy / black (l'insieme completo usato dalla CI).
**Ogni nuovo schema deve avere un test e2e** in `tests/test_e2e.py` che colpisca un URL/API reale. Sono richiesti anche test unitari con fixture inline (`tests/test_socid_improvements.py`) ma non sostituiscono la copertura e2e. Vedi [docs/testing-and-ci.md](https://github.com/soxoj/socid-extractor/blob/master/docs/testing-and-ci.md) per i dettagli.
La documentazione per sviluppatori (architettura, moduli, CI) si trova in [docs/](https://github.com/soxoj/socid-extractor/blob/master/docs).
## Contribuire
Vedi la [guida alla contribuzione](https://github.com/soxoj/socid-extractor/blob/master/CONTRIBUTING.md) se vuoi aggiungere un nuovo schema o correggere qualcosa.