
Telegram OSINT, scraping e arquivamento como um aplicativo web local. Coleta multi-conta, pesquisa de perfil com fotos históricas e diffs de alterações, dez formatos de exportação.
Telegram OSINT, raspagem e arquivamento.
Um aplicativo web local que roda inteiramente na sua máquina e fala apenas com o Telegram.
npm install
npm start
Em seguida, abra http://127.0.0.1:5173. A primeira execução orienta você nas credenciais da API, no login por QR e no carregamento dos seus diálogos. O Telegram é o único servidor com o qual ele fala. Não há conta para criar, nem telemetria, nem serviço no meio: o que você coleta fica em um arquivo SQLite que pertence a você.
Sucessor de telegram-scraper, telescope e Harrier, construído sobre o Telethon 1.44.
| Coletar | Canais, grupos e tópicos de fórum em várias contas, com mídia, deduplicação e retomada |
| Investigar | Telefone, @username, id ou link t.me para um perfil, todas as fotos históricas e um diff desde a última vez |
| Exportar | Dez formatos, de um CSV simples a um pacote de evidências com hash |
| Roda em | Node 18+, Python 3.12+, SQLite. Um banco de dados, uma pasta, sem serviços |
Coletar
-100 completo ao lado do nome e um selo para a conta que o enxergaInvestigar
@username, id de usuário ou link t.meExportar
npm install cria o ambiente Python em server/.venv e instala os dois lados.
| O quê | Onde |
|---|---|
| Config | ~/.config/tgscope/config.json (mode 600) |
Um único banco de dados contém tudo, e é isso que torna possíveis a pesquisa entre diálogos, a tabela compartilhada de usuários, a deduplicação de mídia e o grafo de encaminhamento.
Os arquivos são organizados por tipo de diálogo, depois diálogo, depois tópico de fórum, depois tipo 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
Os nomes de diretórios combinam o identificador (handle) com o id completo, títulos não ASCII são transliterados e os nomes de arquivo são preenchidos com zeros para que sejam ordenados cronologicamente.
Cada chamada ao Telegram passa por um controlador por conta com um token bucket e backoff de FloodWait, e cada leitura paginada — mensagens, diálogos, membros, fotos de perfil — espera um flood passar e é retomada em vez de falhar a execução. Três perfis:
Esperas mais longas são anunciadas no log de atividade e aguardadas; doze seguidas em uma leitura fazem o processo desistir e reportar isso.
Várias contas são suportadas. Marque uma como burner nas Configurações e as consultas de telefone serão executadas nela automaticamente, porque essa é a única operação arriscada:
Uma consulta de telefone importa o número como contato por um instante e o exclui em seguida. Se o dono já tiver seu número salvo, ele poderá ver uma notificação de "entrou no Telegram". O tgscope pergunta primeiro, todas as vezes, e o cartão do perfil registra qual conta foi usada.
npm test # 92 backend and 42 frontend tests, no network needed
npm run build # production bundle of the client
O backend é FastAPI sobre um núcleo Telethon, testado contra um cliente Telethon falso: o scraper, os exportadores, a estrutura da mídia e cada migração de esquema. Os testes do frontend cobrem a lógica pura por trás do navegador, aritmética de períodos, agrupamento em histogramas e a formatação de números e timestamps, e renderizam cada tela duas vezes, uma vazia e uma preenchida.
scripts/demo/ regenera docs/preview.gif a partir de dados falsos pré-carregados. Ele requer chromium e ffmpeg, não toca em nada no seu workspace real e não faz parte do aplicativo.
O código-fonte não traz comentários — a nomenclatura e a estrutura carregam o significado, e um teste garante isso.
Para pesquisa, jornalismo e investigações autorizadas. Ele usa a API oficial do Telegram por meio do Telethon e lê apenas o que sua conta já pode ver — não contorna as configurações de privacidade de ninguém. Não o use para assédio ou perseguição, respeite os termos de serviço do Telegram e observe a lei de proteção de dados que se aplica a você.
Licença MIT.
| Formato | O que você obtém |
|---|
csv | Um arquivo por diálogo |
json / jsonl | Metadados completos; JSONL é transmitido linha por linha |
xlsx | Planilhas para mensagens, mídia, participantes e reações |
html | Relatório independente: estatísticas, atividade, principais remetentes, origens de encaminhamento, tabela pesquisável |
markdown | O mesmo relatório como texto |
gexf / edges | Grafo de encaminhamento para Gephi e Maltego |
sqlite | Um banco de dados independente apenas com os diálogos selecionados |
bundle | ZIP com dados, mídia, um manifesto de hashes SHA-256 e o registro da coleta |
| Banco de dados | ~/.local/share/tgscope/tgscope.db (WAL, FTS5) |
| Mídia | ~/.local/share/tgscope/media/ |
| Exportações | ~/.local/share/tgscope/exports/<timestamp>-<label>/ |
| Perfil | Workers de mídia | Espaçamento de requisições | Esperas absorvidas silenciosamente |
|---|
stealth | 1 | 1.6 s | até 180 s |
balanced | 4 | 0.35 s | até 90 s |
fast | 8 | nenhum | até 45 s |