
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 Telegram, scraping et archivage.
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 les identifiants API, une connexion par QR code et le chargement de vos dialogs. Telegram est le seul serveur avec lequel elle communique. 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.
| Collecte | Canaux, groupes et sujets de forum sur plusieurs comptes, avec médias, déduplication et reprise |
| Investigation | Téléphone, @username, identifiant ou lien t.me vers un profil, chaque photo historique, et une différence depuis la dernière fois |
| Export | Dix formats, d'un simple CSV à un bundle de preuves hachées |
| Fonctionne sur | Node 18+, Python 3.12+, SQLite. Une base de données, un dossier, aucun service |
Collecte
-100 à côté du nom et un badge pour le compte qui y a accèsInvestigation
@username, un identifiant utilisateur ou un lien t.meExport
npm install crée l'environnement Python dans server/.venv et installe les deux parties.
| Élément | Emplacement |
|---|---|
| Configuration | ~/.config/tgscope/config.json (mode 600) |
Une seule base de données contient tout, c'est ce qui rend possibles la recherche entre dialogs, la table utilisateurs partagée, la déduplication des médias et le graphe de renvois.
Les fichiers sont classés par type de dialog, puis par dialog, puis par sujet de forum, puis par type de média :
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
Les noms de dossiers combinent le pseudo avec l'identifiant complet, les titres non ASCII sont translittérés et les noms de fichiers sont complétés par des zéros pour un tri chronologique.
Chaque appel Telegram passe par un régulateur par compte avec un bucket à jetons et un backoff FloodWait, et chaque lecture paginée — messages, dialogs, membres, photos de profil — attend la fin d'un flood et reprend au lieu d'échouer l'exécution. Trois profils :
Les attentes plus longues sont annoncées dans le journal d'activité et subies jusqu'au bout ; douze d'affilée sur une même lecture font abandonner et signaler le problème.
Plusieurs comptes sont pris en charge. Marquez-en un comme burner dans les paramètres et les recherches de téléphone s'exécuteront automatiquement dessus, car c'est l'opération risquée :
Une recherche de téléphone importe le numéro comme contact un instant puis le supprime. 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 carte de profil enregistre quel compte a été utilisé.
npm test # 92 backend and 42 frontend tests, no network needed
npm run build # production bundle of the client
Le backend est une application FastAPI sur un cœur Telethon, testé contre un faux client Telethon : le scraper, les exportateurs, l'organisation des médias et chaque migration de schéma. Les tests frontend couvrent la logique pure du navigateur, l'arithmétique des périodes, le regroupement en histogrammes et le formatage des nombres et des horodatages, et affichent chaque écran deux fois, une fois vide et une fois rempli.
scripts/demo/ régénère docs/preview.gif à partir de fausses données préremplies. Il nécessite chromium et ffmpeg, ne touche à rien dans votre espace de travail réel et ne fait pas partie de l'application.
Le code source ne contient aucun commentaire — le nommage et la structure portent le sens, et un test le fait respecter.
Pour la recherche, le journalisme et les enquêtes autorisées. Il utilise l'API officielle de Telegram via Telethon et ne lit que ce que votre compte peut déjà voir — il ne contourne pas les paramètres de confidentialité de qui que ce soit. Ne l'utilisez pas pour du harcèlement ou de la traque, respectez les conditions d'utilisation de Telegram et tenez compte de la loi sur la protection des données qui s'applique à vous.
Sous licence MIT.
| Format | Ce que vous obtenez |
|---|
csv | Un fichier par dialog |
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 renvoi, tableau consultable |
markdown | Le même rapport sous forme de texte |
gexf / edges | Graphe de renvois pour Gephi et Maltego |
sqlite | Une base de données autonome contenant uniquement les dialogs sélectionnés |
bundle | ZIP avec les données, médias, un manifeste des hashs SHA-256 et le journal de collecte |
| Base de données | ~/.local/share/tgscope/tgscope.db (WAL, FTS5) |
| Médias | ~/.local/share/tgscope/media/ |
| Exports | ~/.local/share/tgscope/exports/<timestamp>-<label>/ |
| Profil | Workers médias | 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 |