
Telegram-OSINT, Scraping und Archivierung als lokale Web-App. Multi-Account-Sammlung, Profil-Lookup mit historischen Fotos und Änderungs-Diffs, zehn Exportformate.
Telegram-OSINT, Scraping und Archivierung.
Eine lokale Web-App, die vollständig auf deinem Rechner läuft und nur mit Telegram spricht.
npm install
npm start
Öffne dann http://127.0.0.1:5173. Der erste Start führt dich durch die API-Anmeldedaten, eine QR-Anmeldung und das Laden deiner Dialoge. Telegram ist der einzige Server, mit dem die App spricht. Es gibt kein Konto zu erstellen, keine Telemetrie und keinen Dienst dazwischen: Was du sammelst, bleibt in einer SQLite-Datei, die dir gehört.
Nachfolger von telegram-scraper, telescope und Harrier, basierend auf Telethon 1.44.
| Sammeln | Kanäle, Gruppen und Forenthemen über mehrere Konten hinweg, mit Medien, Deduplizierung und Fortsetzung |
| Untersuchen | Telefonnummer, @username, ID oder t.me-Link zu einem Profil, jedes historische Foto und ein Diff seit dem letzten Mal |
| Exportieren | Zehn Formate, von einer einfachen CSV bis zu einem gehashten Beweisbündel |
| Läuft auf | Node 18+, Python 3.12+, SQLite. Eine Datenbank, ein Ordner, keine Dienste |
Sammeln
-100-ID neben dem Namen und einem Abzeichen für das Konto, das ihn siehtUntersuchen
@username, Benutzer-ID oder t.me-Link nachschlagenExportieren
npm install erstellt die Python-Umgebung unter server/.venv und installiert beide Seiten.
| Was | Wo |
|---|---|
| Konfiguration | ~/.config/tgscope/config.json (mode 600) |
Eine Datenbank enthält alles – das ermöglicht die Suche über Dialoge hinweg, die gemeinsame Benutzertabelle, die Medien-Deduplizierung und den Weiterleitungsgraphen.
Dateien werden nach Dialogtyp, dann Dialog, dann Forenthema und dann Medienart abgelegt:
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
Verzeichnisnamen kombinieren den Handle mit der vollständigen ID, nicht-ASCII-Titel werden transliteriert und Dateinamen werden mit Nullen aufgefüllt, sodass sie chronologisch sortieren.
Jeder Telegram-Aufruf läuft über einen Pro-Konto-Regler mit Token-Bucket und FloodWait-Backoff,
und jeder seitenweise gelesene Vorgang – Nachrichten, Dialoge, Mitglieder, Profilfotos – wartet eine Flut ab und
wird fortgesetzt, anstatt den Lauf abzubrechen. Drei Profile:
Längere Wartezeiten werden im Aktivitätsprotokoll angekündigt und abgewartet; zwölf hintereinander bei einem Lesevorgang geben auf und melden es.
Mehrere Konten werden unterstützt. Markiere eines in den Einstellungen als Burner, und Telefonabfragen laufen automatisch darüber, denn das ist der eine riskante Vorgang:
Eine Telefonabfrage importiert die Nummer für einen Moment als Kontakt und löscht sie wieder. Wenn der Besitzer deine Nummer bereits gespeichert hat, sieht er möglicherweise eine „Telegram beigetreten“-Benachrichtigung. tgscope fragt jedes Mal zuerst, und die Profilkarte zeichnet auf, welches Konto verwendet wurde.
npm test # 92 backend and 42 frontend tests, no network needed
npm run build # production bundle of the client
Das Backend ist FastAPI auf einem Telethon-Kern, getestet gegen einen Fake-Telethon-Client: den Scraper, die Exporteure, das Medien-Layout und jede Schema-Migration. Die Frontend-Tests decken die reine Logik hinter dem Browser ab, Periodenarithmetik, Histogramm-Bucketing und die Zahlen- und Zeitstempelformatierung, und rendern jeden Bildschirm zweimal: einmal leer und einmal befüllt.
scripts/demo/ regeneriert docs/preview.gif aus vorbereiteten Beispieldaten. Es benötigt chromium und
ffmpeg, berührt nichts in deinem echten Arbeitsbereich und ist nicht Teil der App.
Der Quellcode enthält keine Kommentare – Namen und Struktur tragen die Bedeutung, und ein Test stellt das sicher.
Für Forschung, Journalismus und autorisierte Ermittlungen. Es nutzt die offizielle Telegram-API über Telethon und liest nur, was dein Konto bereits sehen kann – es umgeht niemandes Datenschutzeinstellungen. Verwende es nicht für Belästigung oder Stalking, respektiere die Nutzungsbedingungen von Telegram und beachte das für dich geltende Datenschutzrecht.
MIT-lizenziert.
| Format | Was du bekommst |
|---|
csv | Eine Datei pro Dialog |
json / jsonl | Vollständige Metadaten; JSONL streamt Zeile für Zeile |
xlsx | Tabellen für Nachrichten, Medien, Teilnehmer und Reaktionen |
html | Eigenständiger Bericht: Statistiken, Aktivität, Top-Absender, Weiterleitungsquellen, durchsuchbare Tabelle |
markdown | Derselbe Bericht als Text |
gexf / edges | Weiterleitungsgraph für Gephi und Maltego |
sqlite | Eine eigenständige Datenbank nur mit den ausgewählten Dialogen |
bundle | ZIP mit Daten, Medien, einem Manifest der SHA-256-Hashes und dem Erfassungsprotokoll |
| Datenbank | ~/.local/share/tgscope/tgscope.db (WAL, FTS5) |
| Medien | ~/.local/share/tgscope/media/ |
| Exporte | ~/.local/share/tgscope/exports/<timestamp>-<label>/ |
| Profil | Medien-Worker | Anfrageabstand | Stillschweigend absorbierte Wartezeiten |
|---|
stealth | 1 | 1.6 s | bis zu 180 s |
balanced | 4 | 0.35 s | bis zu 90 s |
fast | 8 | keine | bis zu 45 s |