
Informer (TGInformer) 是一个机器人库,允许你伪装成多个真实的 Telegram 用户,并监控 500+ 个 Telegram 频道 每个账号。详细信息记录到 MySQL 数据库、私密 Google Sheet 以及你自己的私人频道中,便于分析。
这是一个存在已知 bug 的功能性概念验证项目。欢迎 fork、分享,也欢迎与我联系。



支持基于正则表达式的关键词过滤
使用 SQLAlchemy 实现数据持久化,与数据库无关

将上下文消息和频道数据记录到私人频道和数据库
存储消息发送者、频道、频道参与人数等元信息


持久化已加入频道的会话
只需登录一次,机器人永久保持登录状态,无需重新进行双因素认证
每个账号最多可加入 500 个频道

编辑 informer.env 文件,其中包含 informer 所需的所有环境变量。
你可以在此处获取必要的 Telegram 相关信息:
https://my.telegram.org/auth 进行身份验证,提供手机号码以及发送到手机(或 Telegram)的验证码。


验证通过后,点击 "API Development Tools"

创建一个新的应用程序,填写下方所示的表单

现在你应该获得了 informer.env 文件中 TELEGRAM_API_HASH 和 TELEGRAM_API_APP_ID 字段所需的参数值。

TELEGRAM_ACCOUNT_PHONE_NUMBER,然后继续下一部分。
到目前为止,我们已经有了 Telethon 和 Informer 访问 Telegram API 所需的内容。接下来,我们需要获取你机器人账号的标识符。
userinfobot。


你会收到你的 Telegram 用户名和账号 ID。这很重要。

informer.env 文件,填入 TELEGRAM_ACCOUNT_ID(即上一步获取的 Telegram 账号 ID)和 TELEGRAM_ACCOUNT_USER_NAME。你也可以选择性地使用你的用户名或频道 ID 来填写 TELEGRAM_NOTIFICATIONS_CHANNEL_ID。
TELEGRAM_ACCOUNT_PHONE_NUMBER,因为这是生成会话的关键。如需创建多个账号,请参阅下方的 Burner App 说明。确保你正在运行 Python 3,然后在目录中直接运行 ./quick_start.sh。
你必须先运行此脚本,以便首次运行时与 Telegram 进行身份验证,并生成本地的会话文件。
之后,你可以将这些文件复制到不同账号的 app/session 目录中,并在使用 Docker 时挂载它们(如果你选择这样做)。

系统会提示你输入验证码,这要么是通过 Telegram 发送(如果你之前登录过),要么是通过 SMS 发送。

按回车键,你的会话将生成在 app/session 文件夹中,文件名是你提供的国际电话号码,带有 .session 扩展名。
继续下一部分,我们将使用 Docker Compose 设置数据库。
此步骤可选,但如果你想创建一个私密群组频道并获取群组 ID,请执行以下操作:

在 informer.env 文件的 TELEGRAM_NOTIFICATIONS_CHANNEL_URL 参数中设置该 URL。
要获取频道 ID,只需在 app 目录中运行 python3 bot.py <TELEGRAM_ACCOUNT_ID>,其中 <TELEGRAM_ACCOUNT_ID> 是你之前生成的账号 ID。
当脚本加载时,它会显示你所在的所有频道,复制此值并放入 informer.env 文件的 TELEGRAM_NOTIFICATIONS_CHANNEL_ID 参数中,然后终止脚本。现在你已经准备好运行 Informer。
运行 quick_start.sh 后,你可以通过以下命令运行 Docker Compose:
./start.sh 构建 Docker 容器,其中包括 MySQL 数据库。
运行 ./stop.sh 停止容器。
运行 ./clean.sh 移除所有悬空的容器和卷。注意:这会重置数据库,你将丢失所有数据。
需要注意几点:
之前你需要自己运行 MySQL 实例,这导致了一些连接字符串兼容性和版本问题。在此次更新中,MySQL 会自动为你创建并持久化到磁盘。
此外,Dozzle 已集成,你可以在浏览器中查看日志,只需访问 http://localhost:9999 并点击 app_informer 容器即可。
如果你不想使用自己的手机号码,并希望以某种程度的匿名性运行 Informer 机器人,可以使用 Burner App。该应用在 iOS 和 Android 上均可使用。
安装 Burner 应用

按照上述相同步骤,在 https://my.telegram.org/auth 提供新手机号码。
使用 Burner 验证。你会通过 SMS 收到一个验证码,需要提供该验证码。

登录 Telegram。
通过运行 python3 bot.py <api_user_id>(在 app 目录中)尝试使用该应用登录。
由于你使用 Telethon 登录,它会像之前一样在终端中询问你的验证码。
该验证码会通过 Telegram 消息或 SMS 发送。
提供验证码后,它将会话凭据保存在下面提到的会话文件中。只要你有会话文件,就无需再次进行身份验证。
会话保存在 app/session/ 文件夹中,文件名为 <telegram_phone_number>.session。
重复此过程,直到你拥有所有必要的会话文件,然后只需在 Docker 中挂载它们即可。
如何扩展账号数量曾让我头疼不已,因为我需要一个自动化的流程。Telegram 要求你使用一个真实的手机号码,并且能够接收来自短号码的短信。
不幸的是,Twilio 等带有 API 的服务由于防欺诈原因,在美国、加拿大和英国被禁止接收来自短号码的短信 https://support.twilio.com/hc/en-us/articles/223181668-Can-Twilio-numbers-receive-SMS-from-a-short-code-。这本来是理想的选择,唉,可惜不行。