Cloudflare IP を毎時自動最適化!無料 VLESS ノードを生成する Python ツール

タグ CloudflareVLESSPythonプロキシGitHub ActionsIP最適化自動化columnコラムlinuxLinuxwindowsWindowsGitHubオープンソースgslegeCloudflareIP
🚀 今すぐ試せます! デモスクリプトをダウンロードして、解凍後にターミナルで bash ファイル名.sh を実行してください(中身を一度確認してから実行すると安心です)。 (macOS / Linux 環境が必要)

Cloudflare IP を毎時自動最適化!無料 VLESS ノードを生成する Python ツール

ひとことでいうと

CloudflareIP は、世界最大規模の CDN(コンテンツ配信ネットワーク)である Cloudflare のサーバー群から、応答が速い IP アドレスを自動で選び出す Python 製のツールです。米国・日本・シンガポール・ドイツ・オランダの 5 つの地域を対象に、毎時間 IP の品質をスキャンし続け、常に新しい接続先リストを作り続けます。その結果は VLESS(プロキシ接続に使う通信方式の一種)の URL 形式でそのまま出力されるので、対応するアプリにコピー&ペーストするだけで利用できます。GitHub と組み合わせることで、完全に自動で動き続けるノード更新の仕組みが無料で作れます。

こんな人におすすめ

海外サービスへの安定アクセスを確保したい開発者・エンジニア

Cloudflare の世界中に広がるサーバー網を使って、遅延が低く安定した IP 経由での通信を確保できます。複数の国・地域の IP が常に更新されるため、特定の接続先だけに頼らない構成が作れます。サービスの所在地に合わせて使う IP を切り替えることで、状況に応じた最適なルートを選べます。

無料の IP リストを定期的に取得したい研究者・学生

GitHub Actions(あとで説明します)による定期実行で、常に最新の IP リストが自動で揃います。ネットワークの研究やパフォーマンス計測の素材としても活用できます。Python スクリプトの構造がシンプルなので、改造・拡張の学習素材としてもちょうどよい規模です。

Cloudflare の無料機能でセルフホストに挑戦したいエンジニア

付属の _worker.js(JavaScript で書かれたプロキシスクリプト)を自分の Cloudflare アカウントに置くだけで、自分専用のプライベートノードが作れます。Cloudflare の無料プランは 1 日 10 万リクエストまで処理できるので、個人利用ならコストゼロでの運用を狙えます。

インストール・使い方

リポジトリ(ソースコードの置き場)をダウンロードし、Python スクリプトを実行するだけで動作します。ターミナル(文字で命令を送る画面)を開いて、以下の手順をコピー&ペーストしながら進めてください。

Step 1: リポジトリをコピーしてフォルダに入る

git clone https://github.com/gslege/CloudflareIP.git
cd CloudflareIP

git clone でインターネット上のリポジトリを手元のパソコンに丸ごとコピーします。cd でそのフォルダの中に移動します。

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

pip install -r requirements.txt

pip(Python のパッケージ管理ツール)を使って、このスクリプトが動くために必要な外部ライブラリをまとめてインストールします。requirements.txt にリストが書かれています。

Step 3: 特定の地域向けに IP スキャンを実行する(例: 日本)

python py/JP.py

py/ フォルダの中には国別のスクリプトが入っています。JP.py を実行すると日本向けの IP が選別され、JP.txt に書き出されます。

Step 4: 全地域を一括で実行する

python py/All.py

All.py を実行すると、全地域のスキャンが順に行われます。完了すると JP.txtUS.txt などの地域別ファイルと、VLESS URL がまとまった Vless.txt が更新されます。

Cloudflare Pages へのデプロイ(自分専用ノードを作る場合)

Cloudflare のアカウントを作成し(無料プランで十分)、Pages の「Functions」機能で CF-Worker/_worker.js を配置します。デプロイの際は、スクリプト内の UUID(認証に使う識別子)をデフォルト値から自分だけの値に変更することが強く推奨されています。変更しないと他の人と同じ識別子を共有してしまうためです。

ブラウザで試す

ブラウザ上でワーカードメインと UUID を入力し、VLESS ノードの URL を生成するデモページが公開されています。実際のプロキシ接続として使うには自分の Cloudflare Worker/Pages へのデプロイが必要ですが、URL のフォーマット確認や設定内容の理解に役立てることができます。生成された URL を v2ray や Karing などの対応アプリに読み込ませると、そのまま接続に使えます。

動かしてみた

Docker(隔離された実行環境を作るツール)コンテナ内で動作確認をしたところ、Python 3.12.13 が正常に動いていることが確認できました。リポジトリのファイルも問題なく展開されており、py/ フォルダ以下に各地域向けのスクリプトが一式揃っていることを確認しています。

./py/US.py     # 米国向け
./py/JP.py     # 日本向け
./py/SG.py     # シンガポール向け
./py/DE.py     # ドイツ向け
./py/NL.py     # オランダ向け
./py/All.py    # 全地域一括
./py/Vless.py
./py/Domain.py
./py/Cdtools.py
./CF-Worker/_worker.js
./JP.txt  ./US.txt  ./SG.txt  ./DE.txt  ./NL.txt
./Vless.txt

requirements.txt もリポジトリに含まれており、pip install によるセットアップが問題なく完了できる状態です。すでに Vless.txt には GitHub Actions によって生成された VLESS URL が蓄積されており、README に記載された公開 URL からそのまま参照できる構成になっていることも確かめられました。

実践のはじめの一歩

すぐ試せる行動を中心にまとめました。順番通りに進めると迷いにくいです。

  • まず Vless.txt の中身を見てみる: GitHub 上の Raw ファイル URL にブラウザでアクセスすると、生成済みの VLESS URL が並んでいます。どんな形式のデータが出力されるかを先に把握しておくと、後の設定がスムーズです。
  • v2ray や Karing にインポートして接続確認する: 生成された URL の 1 行をコピーして、対応アプリの「URL からノードを追加」機能に貼り付けます。まず 1 つ試してみるのが一番の近道です。
  • リポジトリをフォークして GitHub Actions を有効化する: 自分のアカウントにフォーク(コピー)すると、Actions のタブから定期実行を ON にできます。これだけで毎時間の自動更新が始まります。
  • UUID を変更してから公開する: _worker.js 内の UUID は、デプロイ前に必ず自分だけの値に書き換えてください。UUID 生成サイトはウェブで検索するとすぐ見つかります。
  • 地域別ファイルを用途で使い分ける: 接続したいサービスが米国にあるなら US.txt、日本のサービスなら JP.txt と切り替えると、遅延が抑えやすくなります。
  • Python スクリプトを読んで改造してみる: 各スクリプトは短くシンプルな構造です。スキャン対象の IP 範囲や判定条件を変えてみると、ネットワーク処理の学習にもなります。

活用例

  • Vless.txt をサブスクリプション URL として登録する: v2ray や Karing の「サブスクリプション URL」欄に Vless.txt の GitHub Raw URL を登録しておくと、アプリが自動で最新ノードを取得し続けます。手動で更新する手間がなくなります。
  • GitHub Actions で IP リストを毎時間自動更新する: フォークしたリポジトリで Actions を有効化するだけで、スクリプトが定期的に実行されます。特定の地域だけを更新するよう Actions の設定を絞ることも可能です。
  • 地域別 IP リストをネットワーク計測の素材に使う: JP.txtSG.txt に出力された IP 群は、各リージョンの Cloudflare エッジに近い端点の一覧です。レイテンシ計測や経路分析の入力データとして活用できます。
  • 自分専用のノードジェネレーターページを作る: _worker.js を Cloudflare Pages にデプロイし、独自 UUID を設定することで、プライベートなノード生成ページが作れます。チームや家族と共有する用途にも向いています。
  • Python の自動化スクリプトの学習素材として使う: スクリプトの構造はシンプルで、HTTP リクエスト・ファイル書き込み・ループ処理など、Python の基本が詰まっています。改造しながら動作を確認する練習にちょうどよいです。
  • 複数のプロキシクライアントと組み合わせて検証する: 出力される VLESS URL は v2ray・Karing・Clash など複数のクライアントで読み込めます。クライアントごとの挙動の違いを比較する実験にも使えます。

用語とポイント解説

VLESS

V2Ray や Xray が実装する、シンプルな設計のプロキシ(通信中継)プロトコルです。かんたんに言うと、「UUID という鍵だけで認証する、軽くて速い通信方式」です。従来の VMESS と比べて処理が少ない分、オーバーヘッドが小さいとされています。このツールが生成する接続 URL はすべて VLESS 形式です。

CF IP 優選(Cloudflare IP 優選)

Cloudflare が持つ大量の IP アドレスの中から、遅延やパケットロス率などの指標でランク付けし、品質の高いものを選び出す処理のことです。かんたんに言うと、「たくさんのサーバー候補から『今いちばん速いもの』を自動で選ぶ仕組み」です。このツールの中核機能であり、各 py/*.py スクリプトがこの処理を担当しています。

CDN(コンテンツ配信ネットワーク)

世界中の各地にサーバーを分散配置し、利用者の近くにあるサーバーからデータを届けるネットワーク構成のことです。かんたんに言うと、「世界中に倉庫を置いて、一番近い倉庫から荷物を届ける物流網」のようなものです。Cloudflare は世界最大規模の CDN の一つで、その IP を活用するのがこのツールのポイントです。

GitHub Actions

GitHub(ソースコードをオンラインで管理するサービス)が提供する、処理を自動実行する仕組みです。かんたんに言うと、「リポジトリの中にスケジュール表を書いておくと、決まった時間にプログラムを自動で動かしてくれる機能」です。このツールでは毎時間の IP スキャン実行に使われており、自分でサーバーを用意しなくても無料で動かし続けられます。

UUID(ユニバーサルユニーク識別子)

世界中でほぼ重複しないよう設計された、英数字とハイフンで構成される識別子です。かんたんに言うと、「自分のノードを他人と区別するための『鍵の番号』」のようなものです。VLESS 接続では UUID が認証に使われるため、公開リポジトリのままデフォルト UUID で運用することは推奨されません。

Cloudflare Workers / Pages

Cloudflare が提供するサーバーレス実行環境です。かんたんに言うと、「自分でサーバーを借りなくても、Cloudflare のインフラ上でプログラムを動かせる仕組み」です。無料プランでも 1 日あたり最大 10 万リクエストまで処理でき、このツールの _worker.js をここに置くだけで自分専用のノードジェネレーターが作れます。

サブスクリプション(プロキシ設定における)

プロキシクライアントが持つ「ノードリスト URL の自動取得機能」のことです。かんたんに言うと、「登録した URL を定期的に確認して、最新のノード一覧に自動で更新してくれる購読機能」です。Vless.txt の Raw URL を登録しておくと、スクリプトが更新するたびに新しいノードがアプリ側にも反映されます。

リージョン(地域)

このツールでは、IP スキャンの対象となる地理的な区分を指します。かんたんに言うと、「どの国のサーバーから IP を選ぶかを決めるグループ分け」のことです。現在は JP(日本)・US(米国)・SG(シンガポール)・DE(ドイツ)・NL(オランダ)の 5 リージョンが対応しており、それぞれ独立した Python スクリプトで管理されています。

プロキシクライアント

VLESS などのプロキシ URL を読み込んで、実際の通信を中継するアプリケーションです。かんたんに言うと、「生成されたノード URL を使って実際に接続してくれるアプリ」のことです。v2ray・Karing・Clash などが代表的で、このツールが出力した URL をそのままインポートして使えます。

ぜひ、毎時自動更新の IP リストを使った安定接続の構築や、Cloudflare Pages への自分専用ノードのデプロイなどに活用してみてはいかがでしょうか。