aceloolrd/telegram-osint-scraper

GitHub: aceloolrd/telegram-osint-scraper

基于 Telethon 的异步 Telegram 消息监听工具,将已订阅频道和群组的消息实时存入 PostgreSQL 数据库。

Stars: 0 | Forks: 0

# Telegram OSINT Scraper [![Python](https://img.shields.io/badge/python-3.10%2B-blue)](https://www.python.org/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Telethon](https://img.shields.io/badge/Telethon-1.36-green)](https://github.com/LonamiWebs/Telethon) 一个 Telegram userbot,监听账号订阅的所有聊天和频道中的传入消息,并将结构化数据存储在 PostgreSQL 数据库中以供进一步分析。 ## ⚠️ 账号安全 — Telegram 会封禁你吗? **简短回答:** Telegram 不会因为使用 Telethon 本身而封禁账号。它封禁账号是因为*可疑的行为模式* —— 由于 Telethon 经常被垃圾邮件发送者使用,因此 Telegram 的垃圾邮件检测对 userbot 相当严格。 ### 实际触发封禁的原因 | 触发因素 | 风险等级 | |---|---|---| | 无延迟的快速请求 | 高 | | 新账号(< 几天) | 高 | | VoIP / 虚拟电话号码 | 高 | | 群发消息或广告 | 高 | | 可疑 IP / 数据中心主机 | 中 | | 读取消息而不进行交互 | 低 | | 监控你已加入的频道 | 低 | ### Telegram 服务条款 [Telegram API ToS](https://core.telegram.org/api/terms) 明确禁止: - **在用户不知情且未同意的情况下**代表用户执行操作 - 干扰已读回执、在线状态或自毁计时器 - 使用收集的数据训练 ML/AI 模型 违规者会收到 **10 天警告**,然后 API 访问权限将被撤销。严重违规(垃圾邮件、网络钓鱼)可能会导致永久封禁账号。 ### 你可能遇到的错误代码 | 代码 | 含义 | |---|---|---| | `401 USER_DEACTIVATED_BAN` | 账号已被封禁 | | `420 FLOOD_WAIT_X` | 触发速率限制 — 等待 X 秒 | | `PeerFloodError` | 账号在某些 peer 上受到临时限制 | ### 保持安全的最佳实践 - **使用老账号** —— 不要在刚创建的账号上运行 - **真实 SIM 卡,而非 VoIP** —— 虚拟号码属于高风险 - **遵守速率限制** —— Telegram 未公开的软限制约为每个聊天 1 请求/秒 - **处理 `FloodWaitError`** —— Telethon 会自动处理,不要覆盖它 - **检查账号状态** —— 在 Telegram 内向 [@SpamBot](https://t.me/spambot) 发送消息,查看你是否被标记 - **只监控你订阅的聊天** —— 不要为了抓取而大量加入频道 如果你被封禁:联系 `abuse@telegram.org` 或使用 [telegram.org/support](https://telegram.org/support)。 ## 功能 - 通过 [Telethon](https://github.com/LonamiWebs/Telethon) (MTProto) 实时捕获消息 - 存储 `user_id`、`channel_id`、`message_id`、`channel_username`、消息文本和 Unix 时间戳 - 全程异步 I/O —— `asyncio` + `asyncpg` - 优雅关机,正确清理数据库连接 - 所有凭据通过环境变量 (`.env`) 配置 - 带时间戳的结构化日志 ## 技术栈 | 层级 | 技术 | |---|---|---| | Telegram API | Telethon 1.36 | | 数据库 | PostgreSQL + asyncpg | | 配置 | python-decouple | | 运行时 | Python 3.10+, asyncio | ## 项目结构 ``` telegram-osint-scraper/ ├── main.py # Entry point — client + event handler ├── requirements.txt # Dependencies ├── .env.example # Environment variables template └── .gitignore ``` ## 快速开始 ### 1. 获取 Telegram API 凭证 前往 [my.telegram.org/apps](https://my.telegram.org/apps),创建一个应用并复制 `API_ID` 和 `API_HASH`。 ### 2. 克隆并安装 ``` git clone https://github.com/YOUR_USERNAME/telegram-osint-scraper.git cd telegram-osint-scraper python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r requirements.txt ``` ### 3. 配置环境 ``` cp .env.example .env # 编辑 .env — 填入 API_ID, API_HASH, DB_PASSWORD ``` ### 4. 设置 PostgreSQL ``` CREATE DATABASE osint; ``` 在 `.env` 中相应更新 `DB_NAME`。 ### 5. 运行 ``` python main.py ``` 首次运行时,Telethon 会要求你提供电话号码和确认码以创建会话文件。 ## 数据库 Schema ``` CREATE TABLE messages ( id SERIAL PRIMARY KEY, user_id BIGINT, channel_id BIGINT, message_id BIGINT, channel_username TEXT, message TEXT, timestamp BIGINT -- Unix timestamp ); ``` ## 环境变量 | 变量 | 必需 | 默认值 | 描述 | |---|---|---|---|---| | `API_ID` | 是 | — | Telegram 应用 API ID | | `API_HASH` | 是 | — | Telegram 应用 API hash | | `SESSION_NAME` | 否 | `session` | `.session` 文件的名称 | | `TIMEOUT` | 否 | `60` | MTProto 请求超时(秒) | | `DB_USER` | 否 | `postgres` | PostgreSQL 用户 | | `DB_PASSWORD` | 是 | — | PostgreSQL 密码 | | `DB_NAME` | 否 | `postgres` | 数据库名称 | | `DB_HOST` | 否 | `localhost` | 数据库主机 | | `DB_PORT` | 否 | `5432` | 数据库端口 | # Telegram OSINT Scraper — RU 基于 Telethon 的 Userbot,实时拦截账号订阅的所有聊天和频道中的传入消息,并将结构化数据保存到 PostgreSQL 中。 ## ⚠️ 账号安全 — Telegram 会因为 Telethon 封禁你吗? **简而言之:** Telegram 不会因为使用 Telethon 本身而封禁你。它封禁是因为**可疑的行为模式** —— 但由于 Telethon 被垃圾邮件发送者广泛使用,Telegram 的反垃圾系统对 userbot 非常严格。 ### 真正导致封禁的原因 | 触发因素 | 风险 | |---|---|---| | 无延迟的大量请求 | 高 | | 新账号(< 几天) | 高 | | VoIP / 虚拟号码 | 高 | | 群发或广告 | 高 | | 可疑 IP / 数据中心托管 | 中 | | 仅读取消息无主动操作 | 低 | | 监控已订阅的频道 | 低 | ### Telegram API 使用规则 [Telegram API ToS](https://core.telegram.org/api/terms) 明确禁止: - **在用户不知情和不同意的情况下**代表用户执行操作 - 干扰阅读状态、在线状态、消息自毁 - 使用收集的数据训练 ML/AI 模型 违规者将有 **10 天**时间整改,之后 API 访问将被撤销。垃圾邮件/网络钓鱼将导致永久封号。 ### 错误代码 | 代码 | 含义 | |---|---|---| | `401 USER_DEACTIVATED_BAN` | 账号被封禁 | | `420 FLOOD_WAIT_X` | Rate limit — 需要等待 X 秒 | | `PeerFloodError` | 账号对部分联系人暂时受限 | ### 如何降低风险 - **使用老账号** —— 不要在刚创建的账号上运行 - **真实 SIM 卡,而非 VoIP** —— 虚拟号码属于高风险区域 - **遵守 rate limits** —— Telegram 非官方软限制约为每个聊天 1 请求/秒 - **不要拦截 `FloodWaitError`** —— Telethon 会自动处理它 - **检查账号状态** —— 在 Telegram 中给 [@SpamBot](https://t.me/spambot) 发消息,它会显示账号是否被标记 - **只监控订阅** —— 不要为了收集数据而大量加入频道 如果被封禁:`abuse@telegram.org` 或 [telegram.org/support](https://telegram.org/support)。 ## 功能 - 通过 [Telethon](https://github.com/LonamiWebs/Telethon) (MTProto) 实时捕获消息 - 保存 `user_id`、`channel_id`、`message_id`、频道名称、文本和 Unix 时间戳 - 完全异步技术栈 —— `asyncio` + `asyncpg` - 正确关闭连接的优雅退出 (graceful shutdown) - 所有凭据通过环境变量 (`.env`) 配置 - 带时间戳的结构化日志 ## 快速开始 ### 1. 获取 Telegram API 密钥 前往 [my.telegram.org/apps](https://my.telegram.org/apps),创建一个应用,复制 `API_ID` 和 `API_HASH`。 ### 2. 克隆并安装依赖 ``` git clone https://github.com/YOUR_USERNAME/telegram-osint-scraper.git cd telegram-osint-scraper python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r requirements.txt ``` ### 3. 配置环境 ``` cp .env.example .env # 在 .env 中填写 API_ID, API_HASH, DB_PASSWORD ``` ### 4. 创建数据库 ``` CREATE DATABASE osint; ``` 在 `.env` 中更新 `DB_NAME`。 ### 5. 运行 ``` python main.py ``` 首次运行时,Telethon 会请求电话号码和验证码以创建会话文件。
标签:asyncpg, ESC4, meg, OSINT, PostgreSQL, Python, Telegram, Telethon, URL抓取, Userbot, 信息安全, 命令控制, 异步编程, 数据库存储, 数据抓取, 数据泄露, 数据采集, 无后门, 测试用例, 消息监控, 用户机器人, 舆情分析, 计算机取证, 逆向工具, 隐私, 频道监控