Telegram チャンネルから10種類以上のプロキシ設定を自動収集・分類する Python ツール「TGParse」

タグ columnコラムlinuxLinuxGitHubオープンソースSurfboardv2rayTGParse

Telegram チャンネルから10種類以上のプロキシ設定を自動収集・分類する Python ツール「TGParse」

ひとことでいうと

TGParse は、Telegram(テレグラム)のパブリックチャンネルに投稿されたプロキシ設定を Python で自動的に集めて、種類別に整理してくれるツールです。Vmess・Vless・Trojan・ShadowSocks・Hysteria2・TUIC など 10 種類以上のプロトコル(通信方式)に対応しており、集めた設定は v2rayN・Clash・sing-box といった主要なプロキシクライアントにそのまま読み込める形式で出力されます。「常に新しいプロキシ設定を手に入れたい」「複数のプロトコルをまとめて管理したい」という方に向けた、自動化の基盤として機能するツールです。

こんな人におすすめ

1. VPN クライアントの設定を常に最新の状態に保ちたい人

Telegram には、無料のプロキシ設定を配布しているパブリックチャンネルが数多く存在します。TGParse を定期的に実行することで、有効な設定を自動的に収集し続けられます。手動でコピーする手間がなくなり、常に新鮮な設定リストを維持できます。

2. 複数のプロトコルを一か所で管理したい研究者・開発者

Vmess・Vless・Hysteria2・TUIC など、UDP と TCP 双方のプロトコルを一括でスキャンし、プロトコル別のファイルに整理します。プロトコルごとの速度や安定性を比較する素材としても活用できます。

3. Telegram API の使い方を Python で学びたい人

Telethon(Python 製の Telegram クライアントライブラリ)を使ったマルチスレッドクローラーの実践例として参照できます。非同期 I/O と正規表現を組み合わせてプロトコルを判別するコードを、実際に動く形で学べます。

インストール・使い方

ターミナル(文字を入力してパソコンに命令を送る画面)を開き、次の手順を順番に実行してください。コマンドはそのままコピー&ペーストして構いません。

Step 1 — ソースコードを手元に取得する

git clone https://github.com/Surfboardv2ray/TGParse.git
cd TGParse

git clone は、GitHub(ソースコードの公開置き場)からファイルをまるごとダウンロードするコマンドです。cd TGParse で、ダウンロードしたフォルダの中に移動します。

Step 2 — 必要なライブラリをインストールする

pip install -r requirements.txt

pip は Python のパッケージ管理ツールです。requirements.txt に書かれたライブラリ(Telethon など)を一括でインストールします。

Step 3 — Telegram API の認証情報を設定する

configtg.txt というファイルを開き、api_idapi_hash・電話番号を記入します。これらの情報は、Telegram Developer Portal(my.telegram.org)でアプリケーションを作成すると取得できます。初回実行時は Telegram からワンタイムコード(一度だけ使える確認コード)が届くので、入力して認証を完了させてください。

Step 4 — パーサーを実行する

python main-parser.py

実行すると、telegramchannels.json に記載されたチャンネルが順番にスキャンされます。収集した設定は splitted/ フォルダの中にプロトコル別のファイルとして生成・更新されます。

デモについて

TGParse は Telegram API の認証情報(api_id・api_hash・電話番号)が必須のため、ブラウザ上でそのまま試せるインタラクティブデモはありません。手元で試すには「インストール・使い方」の手順に従い、Telegram Developer Portal でアプリを作成してから実行してください。なお、すでに収集済みのサブスクリプションファイル(splitted/mixed など)は GitHub 上で公開されており、プロキシクライアントに直接登録して動作を確認するだけであれば、認証の手続きは不要です。

動かしてみた

Python 3.12 の環境で依存パッケージのインストールを実施し、正常に完了することを確認しました。

リポジトリを確認すると、splitted/ および python/ フォルダの下に、各プロトコル(trojan・vless・hysteria・vmess・naive・hy2・ss・socks・tuic・hysteria2)ごとのサブスクリプションファイルがあらかじめ用意されています。最新のビルド済みリストとして、そのままプロキシクライアントに登録して使えます。

telegramchannels.json には監視対象チャンネルの一覧が、invalidtelegramchannels.json には解析に失敗したチャンネルの記録が JSON 形式で管理されており、チャンネルの追加・整理が簡単に行える設計になっています。また python/splitter.py は、既存の混在リストをプロトコル別に再分割するスタンドアロンスクリプト(単独で動くプログラム)として利用できることも確認しました。

はじめの一歩:チャンネルリストと splitter を確認する

Telegram に接続する前に、次の手順で動作感を掴んでおくと、スムーズに進められます。

  • telegramchannels.json を開いて内容を確認する: 対象チャンネルの一覧が記載されています。チャンネルの username(@から始まる名前)を追記するだけで収集対象を増やせます。
  • invalidtelegramchannels.json で不要チャンネルを整理する: 解析に失敗したチャンネルが自動的に記録されます。定期的に見直して、有効なチャンネルだけを残すとよいでしょう。
  • python/splitter.py を単独で試してみる: Telegram 認証なしに動かせるスタンドアロンスクリプトです。既存の混在ファイルをプロトコルごとに分割する処理だけを先に体験でき、ツールの全体像を手軽に把握できます。
  • splitted/ フォルダの中身を眺めてみる: すでに収集済みのサブスクリプションファイルが種類別に入っています。プロキシクライアントへの登録から試すと、ツール全体の流れが理解しやすくなります。

活用アイデア

  • cron + Git push による自動サブスクリプション更新: 毎時 main-parser.py を実行し、生成した splitted/mixed を GitHub Pages や自前サーバーへ自動でプッシュする仕組みを作れます。常に新鮮なサブスクリプション URL を維持する自動化パイプラインとして活用できます。

  • Clash・sing-box との連携: splitted/vlesssplitted/trojan などのファイルを外部サブスクリプション URL として登録しておくと、クライアント側の「更新」ボタン一つで最新設定を取り込めます。プロキシクライアントの設定管理を自動化する土台として機能します。

  • プロトコル別のパフォーマンス比較: Hysteria2・TUIC(UDP ベースで輻輳制御が特徴)と、TCP ベースの Vmess・Vless・Trojan を同時に収集・保持することで、回線状況や地域ごとにプロトコルを切り替えて比較する素材として使えます。

  • Python による Telegram クローラーの学習素材: Telethon を使ったマルチスレッドクローラーの実装は、非同期処理や正規表現の実践例として参照価値があります。自分のユースケースに合わせてチャンネルリストやフィルタリング条件を改造する練習にも役立ちます。

  • プロキシ設定の棚卸しツールとして活用: invalidtelegramchannels.json を使ったチャンネル管理の仕組みを参考に、独自の設定チェッカーと組み合わせることで、定期的に有効な設定だけを選別する仕組みを作れます。

  • セキュリティ研究・ネットワーク分析の素材収集: 公開チャンネルから多様なプロトコルの設定を一括収集できるため、プロキシプロトコルの動作分析やトラフィックパターンの研究用データセット作成にも応用できます。

用語とポイント解説

Vmess / Vless V2Ray・Xray が利用するプロキシプロトコル(通信の取り決め)です。かんたんに言うと、インターネット通信を別の形に包んで送受信するルールのことです。Vless は Vmess から認証処理を軽量化した後継バージョンで、パフォーマンスが向上しています。

Trojan HTTPS トラフィック(ウェブサイトの暗号化通信)に偽装するプロキシプロトコルです。かんたんに言うと、普通のウェブアクセスに見せかけてプロキシ通信を行う仕組みです。検閲や遮断を回避しやすいという特性があります。

ShadowSocks(SS) 暗号化されたソックスプロキシとして広く普及している軽量プロトコルです。かんたんに言うと、通信内容を暗号化しながらシンプルに転送できるプロキシの一種です。多くのクライアントアプリが対応しており、導入のしやすさが特徴です。

Hysteria / Hysteria2 QUIC(UDP ベースの高速通信規格)を活用したプロトコルで、独自の輻輳制御アルゴリズムを備えています。かんたんに言うと、パケットロス(データの欠損)が多い回線でも高速を維持しやすいように設計された新世代のプロキシプロトコルです。Hysteria2 はその改良版にあたります。

TUIC UDP over ICE を活用した低遅延・高効率のプロトコルです。かんたんに言うと、遅延を抑えながら効率よくデータを送れる UDP ベースのプロキシ方式のことです。動画ストリーミングや音声通話などリアルタイム性が必要な用途に向いています。

Reality Xray が実装したステルス技術で、TLS フィンガープリント(通信の特徴パターン)を実在するサービスに偽装します。かんたんに言うと、有名サービスへの通信のように見せかけることで、プロキシ通信を検知されにくくする技術です。検閲の厳しい環境でも使いやすいとされています。

サブスクリプション Base64(バイナリデータをテキストに変換する方式)でエンコードされた設定 URI のリストです。かんたんに言うと、複数のプロキシ設定をまとめた URL のことで、クライアントがその URL を読み込むだけで設定を一括取得できる便利な形式です。v2rayN や Clash など主要クライアントが対応しています。

Telethon Python 製の Telegram クライアントライブラリです。かんたんに言うと、Python のコードから Telegram を操作するための道具箱のようなものです。TGParse はこのライブラリを使ってチャンネルのメッセージを取得し、プロキシ設定を抽出しています。

マルチスレッド 複数の処理を同時並行で実行する仕組みです。かんたんに言うと、複数のチャンネルを同時に調べることで、一つずつ順番に処理するよりも速く結果を得られる方式のことです。TGParse はこの仕組みを使って多数のチャンネルを効率よくスキャンしています。

ぜひ VPN クライアントの設定自動更新や、Clash・sing-box を使ったプロトコル別管理などに活用してみてはいかがでしょうか。