
OSINT Telegram, scraping et archivage sous forme d'application web locale. Collecte multi-comptes, consultation de profils avec photos historiques et diffs de modifications, dix formats d'exportation.
OSINT, scraping et archivage pour Telegram.
Une application web locale qui s'exécute entièrement sur votre machine et ne communique qu'avec Telegram.
npm install
npm start
Ouvrez ensuite http://127.0.0.1:5173. Le premier lancement vous guide à travers la saisie des identifiants API, une connexion par QR code et le chargement de vos dialogues. Telegram est le seul serveur avec lequel il communique. Il n'y a pas de compte à créer, pas de télémétrie et aucun service intermédiaire : ce que vous collectez reste dans un fichier SQLite qui vous appartient.
Successeur de telegram-scraper, telescope et Harrier, construit sur Telethon 1.44.
| Collecter | Canaux, groupes et sujets de forum sur plusieurs comptes, avec médias, déduplication et reprise |
| Enquêter | Numéro de téléphone, @username, id ou lien t.me vers un profil, toutes les photos historiques, et un diff depuis la dernière fois |
| Exporter | Dix formats, d'un simple CSV à un bundle de preuves haché |
| Fonctionne sur | Node 18+, Python 3.12+, SQLite. Une base de données, un dossier, aucun service |
Collecter
-100 à côté du nom et un badge pour le compte qui le voitEnquêter
@username, un id utilisateur ou un lien t.meExporter
| Format | Ce que vous obtenez |
|---|---|
csv | Un fichier par dialogue |
json / jsonl | Métadonnées complètes ; JSONL diffuse ligne par ligne |
xlsx | Feuilles pour les messages, médias, participants et réactions |
html | Rapport autonome : statistiques, activité, principaux expéditeurs, sources de transfert, table consultable |
markdown | Le même rapport en texte |
gexf / edges | Graphe de transferts pour Gephi et Maltego |
sqlite | Une base de données autonome contenant uniquement les dialogues sélectionnés |
bundle | ZIP avec les données, les médias, un manifeste des hashes SHA-256 et le journal de collecte |
npm install crée l'environnement Python sous server/.venv et installe les deux côtés.
| Quoi | Où |
|---|---|
| Configuration | ~/.config/tgscope/config.json (mode 600) |
| Base de données | ~/.local/share/tgscope/tgscope.db (WAL, FTS5) |
| Médias | ~/.local/share/tgscope/media/ |
| Exports | ~/.local/share/tgscope/exports/<timestamp>-<label>/ |
Une seule base de données contient tout, ce qui rend possibles la recherche inter-dialogues, la table utilisateur partagée, la déduplication des médias et le graphe de transferts.
Les fichiers sont classés par type de dialogue, puis par dialogue, puis par sujet de forum, puis par type de média :
media/
├── channels/technews_-1001234567890/
│ ├── photos/00004711-8001-conference-slides.jpg
│ └── documents/00004802-8210-quarterly-report.pdf
├── groups/pythondev_-1009876543210/
│ ├── general/photos/…
│ └── help/voice/00000004-9004-voice.ogg
└── profiles/123456789/000-5544332211.jpg
Les noms de répertoires combinent le handle avec l'id complet, les titres non-ASCII sont translittérés, et les noms de fichiers sont complétés par des zéros afin qu'ils se trient chronologiquement.
Chaque appel Telegram passe par un régulateur par compte doté d'un token bucket et d'un backoff FloodWait, et chaque lecture paginée - messages, dialogues, membres, photos de profil - attend la fin d'un flood et reprend plutôt que d'échouer. Trois profils :
| Profil | Workers média | Espacement des requêtes | Attentes absorbées silencieusement |
|---|---|---|---|
stealth | 1 | 1,6 s | jusqu'à 180 s |
balanced | 4 | 0,35 s | jusqu'à 90 s |
fast | 8 | aucun | jusqu'à 45 s |
Les attentes plus longues sont annoncées dans le journal d'activité et attendues jusqu'au bout ; douze d'affilée sur une même lecture entraînent l'abandon et un rapport.
Plusieurs comptes sont pris en charge. Marquez-en un comme burner dans les paramètres et les recherches de numéro s'y exécutent automatiquement, car c'est la seule opération risquée :
Une recherche de numéro importe le numéro comme contact pendant un instant puis le supprime à nouveau. Si le propriétaire a déjà votre numéro enregistré, il peut voir une notification « a rejoint Telegram ». tgscope demande d'abord, à chaque fois, et la fiche de profil enregistre le compte utilisé.
npm test # 92 backend and 42 frontend tests, no network needed
npm run build # production bundle of the client