
Pythonで書かれたTelegram大量監視ボット

Informer (TGInformer) は、Telegram 上で複数の実際のユーザーになりすまし、アカウントごとに 500 以上の Telegram チャンネルをスパイできるボットライブラリです。詳細は MySQL データベース、プライベート Google シート、および分析用のプライベートチャンネルに記録されます。
これは既知のバグがある動作する概念実証プロジェクトです。フォーク、共有、連絡は自由に行ってください。



キーワードフィルタリングに正規表現をサポート
SQLAlchemy によるデータベースに依存しないデータ永続化

コンテキストメッセージとチャンネルデータをプライベートチャンネルとデータベースに記録
メッセージの送信者、チャンネル、チャンネルの参加者数に関するメタ情報を保存


参加したチャンネルのセッションを永続化
一度ログインすれば、2FA 再認証なしでボットは永久にログイン状態を維持
アカウントあたり最大 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 アカウント ID を TELEGRAM_ACCOUNT_ID に、ユーザー名を TELEGRAM_ACCOUNT_USER_NAME に設定します。オプションで TELEGRAM_NOTIFICATIONS_CHANNEL_ID にユーザー名またはチャンネル ID を入力することもできます。
TELEGRAM_ACCOUNT_PHONE_NUMBER が入力されていることを確認してください。これはセッション生成の鍵となります。複数アカウントを作成する場合は、以下の Burner アプリを参照してください。
Python 3 が動作していることを確認し、ディレクトリで ./quick_start.sh を実行してください。
初回実行時に Telegram で認証し、ローカルセッションファイルを生成するために、これを最初に実行する必要があります。
後で、異なるアカウントのファイルを app/session にコピーし、必要に応じて Docker 経由でマウントできます。

以前にログインしたことがある場合は Telegram 経由、または SMS で受け取った認証コードの入力を求められます。

Enter キーを押すと、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 を実行して、MySQL データベースを含む Docker コンテナをビルドします
./stop.sh を実行してコンテナを停止します
./clean.sh を実行して、未使用のコンテナとボリュームを削除します。 ** 注意 ** これによりデータベースがリセットされ、すべてのデータが失われます。
注意すべき点がいくつかあります。
以前は独自の MySQL インスタンスを実行する必要があり、接続文字列の互換性やバージョニングに問題が発生することがありました。このアップデートでは、自動的に作成され、ディスクに永続化されます。
さらに、ブラウザでログを表示できる Dozzle が提供されています。http://localhost:9999 にアクセスし、app_informer コンテナをクリックしてください。
自分の電話番号を使用したくなく、ある程度の匿名性を持って Informer ボットを実行したい場合は、iOS および Android で利用可能な Burner アプリを使用できます。
Burner アプリをインストールします

上記と同じ手順で、新しい電話番号を https://my.telegram.org/auth に入力します
Burner で検証します。SMS で認証コードが送信されるので、それを入力する必要があります