
Telegram OSINT, scraping e archiviazione come app web locale. Raccolta multi-account, ricerca profili con foto storiche e diff delle modifiche, dieci formati di esportazione.
Telegram OSINT, scraping e archiviazione.
Un'app web locale che gira interamente sulla tua macchina e comunica solo con Telegram.
npm install
npm start
Poi apri http://127.0.0.1:5173. Il primo avvio ti guida attraverso le credenziali API, un accesso tramite QR e il caricamento dei tuoi dialoghi. Telegram è l'unico server con cui comunica. Non c'è alcun account da creare, nessuna telemetria e nessun servizio intermedio: ciò che raccogli resta in un file SQLite di tua proprietà.
Successore di telegram-scraper, telescope e Harrier, costruito su Telethon 1.44.
| Raccogli | Canali, gruppi e topic dei forum su più account, con media, deduplicazione e ripresa |
| Investiga | Telefono, @username, id o link t.me verso un profilo, ogni foto storica e una diff rispetto all'ultima volta |
| Esporta | Dieci formati, da un semplice CSV a un pacchetto di prove con hash |
| Funziona su | Node 18+, Python 3.12+, SQLite. Un database, una cartella, nessun servizio |
Raccogli
-100 completo accanto al nome e un badge per l'account che lo vedeInvestiga
@username, un id utente o un link t.meEsporta
npm install crea l'ambiente Python in server/.venv e installa entrambe le parti.
| Cosa | Dove |
|---|---|
| Configurazione | ~/.config/tgscope/config.json (modalità 600) |
Un unico database contiene tutto, ed è ciò che rende possibili la ricerca tra dialoghi, la tabella utenti condivisa, la deduplicazione dei media e il grafo degli inoltri.
I file sono organizzati per tipo di dialogo, poi per dialogo, poi per topic del forum, poi per tipo di media:
media/
├── channels/technews_-1002116176890/
│ ├── photos/00004711-8001-conference-slides.jpg
│ └── documents/00004802-8210-quarterly-report.pdf
├── groups/pythondev_-1001597139842/
│ ├── general/photos/…
│ └── help/voice/00000004-9004-voice.ogg
└── profiles/123456789/000-5544332211.jpg
I nomi delle directory combinano l'handle con l'id completo, i titoli non ASCII vengono traslitterati e i nomi dei file sono riempiti con zeri iniziali in modo da ordinarli cronologicamente.
Ogni chiamata a Telegram passa attraverso un regolatore per account con un token bucket e backoff FloodWait, e ogni lettura impaginata - messaggi, dialoghi, membri, foto profilo - attende la fine del flood e riprende invece di far fallire l'esecuzione. Tre profili:
Le attese più lunghe vengono annunciate nel registro delle attività e vengono attese fino in fondo; dodici di fila su una singola lettura fanno desistere e segnalano il problema.
Sono supportati più account. Segna uno come burner nelle Impostazioni e le ricerche telefoniche girano automaticamente su di esso, perché è l'unica operazione rischiosa:
Una ricerca telefonica importa il numero come contatto per un istante e poi lo elimina di nuovo. Se il proprietario ha già salvato il tuo numero, potrebbe vedere una notifica "si è unito a Telegram". tgscope chiede prima, ogni volta, e la scheda del profilo registra quale account ha utilizzato.
npm test # 92 backend and 42 frontend tests, no network needed
npm run build # production bundle of the client
Il backend è FastAPI su un core Telethon, testato contro un client Telethon finto: lo scraper, gli esportatori, la struttura dei media e ogni migrazione dello schema. I test del frontend coprono la logica pura dietro il browser, i calcoli sui periodi, la suddivisione in bucket degli istogrammi e la formattazione di numeri e timestamp, e renderizzano ogni schermata due volte: una vuota e una popolata.
scripts/demo/ rigenera docs/preview.gif da dati finti preimpostati. Richiede chromium e ffmpeg, non tocca nulla nel tuo spazio di lavoro reale e non fa parte dell'app.
Il codice sorgente non contiene commenti — nomi e struttura veicolano il significato, e un test lo impone.
Per ricerca, giornalismo e indagini autorizzate. Utilizza l'API ufficiale di Telegram tramite Telethon e legge solo ciò che il tuo account può già vedere — non bypassa le impostazioni sulla privacy di nessuno. Non usarlo per molestie o stalking, rispetta i termini di servizio di Telegram e fai attenzione alla legge sulla protezione dei dati che si applica a te.
Con licenza MIT.
| Formato | Cosa ottieni |
|---|
csv | Un file per dialogo |
json / jsonl | Metadati completi; JSONL scorre riga per riga |
xlsx | Fogli per messaggi, media, partecipanti e reazioni |
html | Report autonomo: statistiche, attività, mittenti principali, fonti di inoltro, tabella ricercabile |
markdown | Lo stesso report come testo |
gexf / edges | Grafo degli inoltri per Gephi e Maltego |
sqlite | Un database autonomo con solo i dialoghi selezionati |
bundle | ZIP con dati, media, un manifest degli hash SHA-256 e il registro di raccolta |
| Database | ~/.local/share/tgscope/tgscope.db (WAL, FTS5) |
| Media | ~/.local/share/tgscope/media/ |
| Esportazioni | ~/.local/share/tgscope/exports/<timestamp>-<label>/ |
| Profilo | Worker media | Intervallo richieste | Attese assorbite in silenzio |
|---|
stealth | 1 | 1.6 s | fino a 180 s |
balanced | 4 | 0.35 s | fino a 90 s |
fast | 8 | nessuno | fino a 45 s |