aceloolrd/telegram-osint-scraper
GitHub: aceloolrd/telegram-osint-scraper
基于 Telethon 的异步 Telegram 消息监听工具,将已订阅频道和群组的消息实时存入 PostgreSQL 数据库。
Stars: 0 | Forks: 0
# Telegram OSINT Scraper
[](https://www.python.org/)
[](LICENSE)
[](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, 信息安全, 命令控制, 异步编程, 数据库存储, 数据抓取, 数据泄露, 数据采集, 无后门, 测试用例, 消息监控, 用户机器人, 舆情分析, 计算机取证, 逆向工具, 隐私, 频道监控