
OSINT de Telegram, scraping y archivado como aplicación web local. Recopilación multi-cuenta, consulta de perfiles con fotos históricas y diffs de cambios, diez formatos de exportación.
Telegram OSINT, scraping y archivado.
Una aplicación web local que se ejecuta enteramente en tu máquina y solo se comunica con Telegram.
npm install
npm start
Luego abre http://127.0.0.1:5173. La primera ejecución te guía por las credenciales de la API, un inicio de sesión con QR y la carga de tus diálogos. Telegram es el único servidor con el que se comunica. No hay cuenta que crear, ni telemetría ni servicio intermedio: lo que recopilas permanece en un archivo SQLite que te pertenece.
Sucesor de telegram-scraper, telescope y Harrier, construido sobre Telethon 1.44.
| Recopilar | Canales, grupos y temas de foro en varias cuentas, con medios, deduplicación y reanudación |
| Investigar | Teléfono, @username, id o enlace t.me a un perfil, todas las fotos históricas y un diff desde la última vez |
| Exportar | Diez formatos, desde un CSV simple hasta un paquete de evidencia con hash |
| Se ejecuta en | Node 18+, Python 3.12+, SQLite. Una base de datos, una carpeta, sin servicios |
Recopilar
-100 completo junto al nombre y una insignia para la cuenta que lo veInvestigar
@username, id de usuario o enlace t.meExportar
npm install crea el entorno de Python en server/.venv e instala ambos lados.
| Qué | Dónde |
|---|---|
| Configuración | ~/.config/tgscope/config.json (mode 600) |
Una sola base de datos lo contiene todo, y eso es lo que hace posibles la búsqueda entre diálogos, la tabla de usuarios compartida, la deduplicación de medios y el grafo de reenvíos.
Los archivos se clasifican por tipo de diálogo, luego diálogo, luego tema del foro y luego tipo de medio:
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
Los nombres de directorio combinan el alias con el id completo, los títulos no ASCII se transliteran y los nombres de archivo se rellenan con ceros para que se ordenen cronológicamente.
Cada llamada a Telegram pasa por un gobernador por cuenta con un token bucket y retroceso FloodWait, y cada
lectura paginada (mensajes, diálogos, miembros, fotos de perfil) espera a que pase un flood y se reanuda en lugar
de hacer fallar la ejecución. Tres perfiles:
Las esperas más largas se anuncian en el registro de actividad y se esperan; doce seguidas en una sola lectura se rinden y lo informan.
Se admiten varias cuentas. Marca una como desechable en Configuración y las búsquedas de teléfono se ejecutan en ella automáticamente, porque esa es la única operación arriesgada:
Una búsqueda de teléfono importa el número como contacto por un momento y lo elimina de nuevo. Si el propietario ya tiene tu número guardado, es posible que vea una notificación de "se unió a Telegram". tgscope pregunta primero, cada vez, y la tarjeta de perfil registra qué cuenta utilizó.
npm test # 92 backend and 42 frontend tests, no network needed
npm run build # production bundle of the client
El backend es FastAPI sobre un núcleo de Telethon, probado con un cliente Telethon falso: el scraper, los exportadores, la estructura de medios y cada migración de esquema. Las pruebas del frontend cubren la lógica pura detrás del navegador, la aritmética de períodos, la agrupación en histogramas y el formato de números y marcas de tiempo, y renderizan cada pantalla dos veces: una vacía y una poblada.
scripts/demo/ regenera docs/preview.gif a partir de datos falsos sembrados. Necesita chromium y ffmpeg,
no toca nada en tu espacio de trabajo real y no forma parte de la aplicación.
El código fuente no lleva comentarios: los nombres y la estructura transmiten el significado, y una prueba lo garantiza.
Para investigación, periodismo e investigaciones autorizadas. Utiliza la API oficial de Telegram a través de Telethon y solo lee lo que tu cuenta ya puede ver: no elude la configuración de privacidad de nadie. No lo uses para acosar o acechar, respeta los términos de servicio de Telegram y ten en cuenta la ley de protección de datos que te aplica.
Licencia MIT.
| Formato | Qué obtienes |
|---|
csv | Un archivo por diálogo |
json / jsonl | Metadatos completos; JSONL transmite fila por fila |
xlsx | Hojas para mensajes, medios, participantes y reacciones |
html | Informe independiente: estadísticas, actividad, remitentes principales, fuentes de reenvío, tabla buscable |
markdown | El mismo informe como texto |
gexf / edges | Grafo de reenvíos para Gephi y Maltego |
sqlite | Una base de datos independiente solo con los diálogos seleccionados |
bundle | ZIP con datos, medios, un manifiesto de hashes SHA-256 y el registro de recopilación |
| Base de datos | ~/.local/share/tgscope/tgscope.db (WAL, FTS5) |
| Medios | ~/.local/share/tgscope/media/ |
| Exportaciones | ~/.local/share/tgscope/exports/<timestamp>-<label>/ |
| Perfil | Trabajadores de medios | Espaciado de solicitudes | Esperas absorbidas en silencio |
|---|
stealth | 1 | 1.6 s | hasta 180 s |
balanced | 4 | 0.35 s | hasta 90 s |
fast | 8 | ninguno | hasta 45 s |