mcpField
P
proxy-scraper

proxy-scraper

ローカル
maximilianfeix.github.ioブラウザ自動化753 日前に更新

proxy-scraper について

proxy-scraperは、公開リストからHTTP、SOCKS4、SOCKS5プロキシを収集し、各チェックの結果を確認できる形で示します。MCPサーバーを使うと、AIエージェントがプロキシを取得してページを読み込めます。CLIとPython APIからも利用できます。

主な機能

  1. 01公開リストからプロキシを収集
  2. 02チェックごとの結果を表示
  3. 03個別プロキシの診断
  4. 04ローカルのローテーションプロキシサーバー
  5. 05選択したプロキシ経由でページを取得

活用シーン

  1. 01プロトコルや国でプロキシを検索
  2. 02ローカルネットワークからプロキシを再検査
  3. 03プロキシが失敗した理由を調べる
  4. 04プロキシ経由で公開ページを取得

MCP 対応

MCPサーバーは、公開リストからのプロキシ取得、呼び出し元のネットワークからの検査、プロキシ経由のページ取得に使うツールを提供します。ローカルアドレスとプライベートアドレスは拒否します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"maximilianfeix-proxy-scraper": {
"command": "uvx",
"args": [
"proxy-scraper-cli"
]
}
}
}
起動コマンドuvx proxy-scraper-cli

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiproxy-scraper-cli1.31.0

ツール

3

掲載時のツール一覧 · 4 日前に更新

パラメーター型必須説明
limitintegerいいえ返す件数(速度が速い順)
protocolenumいいえプロキシプロトコル。socks5 はあらゆる TCP トラフィックで使用でき、http はほとんどの HTTP クライアントが想定する方式です。any | http | socks4 | socks5
works_onarrayいいえ直近の毎時チェックで以下のすべてのサイトへの接続に成功したプロキシのみ(無料プロキシの多くは、これらのサイトで CAPTCHA または 403 が発生します)
countriesarrayいいえ出口 IP の 2 文字の国コード。例:['DE', 'NL']。空欄の場合はすべての国が対象です。
elite_onlybooleanいいえ接続先がプロキシと認識できないプロキシのみ
https_onlybooleanいいえ検証済み TLS で HTTPS をトンネリングするプロキシのみ。https:// サイトへのアクセスに必要です。
stable_onlybooleanいいえ24 時間以上動作しているプロキシのみ
max_latency_msintegerいいえ最大応答時間。0 = 制限なし
min_speed_kbpsintegerいいえ直近の毎時チェックでダウンロード速度が指定値以上(KiB/s)のプロキシのみ。実際のページを読み込む場合は、例として 300 を指定します。
exclude_datacenterbooleanいいえデータセンター内の出口ノードを除外します(多くのサイトでブロックされています)
min_uptime_percentintegerいいえ過去 7 日間の毎時チェックで指定割合以上に合格したプロキシのみ。最も信頼性の高いものを対象にする場合は、例として 90 を指定します。
exclude_blocklistedbooleanいいえSpamCop のブロックリストに登録された出口ノードを除外します(CAPTCHA を減らせます)

詳細

翻訳後に原文が更新されています。最新の内容は原文をご確認ください。


検証内容を確認できるプロキシチェック:成功した項目、失敗した項目、そしてその時刻。 proxy-scraper は、数百のリストから公開 HTTP、SOCKS4、SOCKS5 プロキシを収集し、それぞれに最大 4 つのチェックを実行します。掲載するプロキシについては各チェックの結果を保持し(それ以外については、各チェックがどのように終了したかを集計します)。そのため、「動作する」という表示を、信頼するしかないラベルではなく、自分で確認できます。

https://github.com/user-attachments/assets/b99c1d8f-5bce-4a52-a8a9-b9c2c726301b

21 秒 · 実際のインターフェース、説明用の数値、ドキュメント用 IP アドレス · mp4

試してみる – インストールは不要です。uvx は uv に含まれています(pipx run でも同じことができます)。

uvx proxy-scraper-cli --pick 3 --verify               # up to 3 proxies from the hourly list that pass right now, from your network
uvx proxy-scraper-cli --diagnose socks5://HOST:PORT   # one proxy, check by check: what it did and what it didn't
ターミナルの録画:proxy-scraper --pick 2 --verify --https-only は 2 つのプロキシを表示し、残り 4 つを除外した理由を stderr に出力します。proxy-scraper --diagnose は 1 つのプロキシについて各チェックとその結果を表示します
localhost 上の 6 つのシミュレーションプロキシに対して実行した、実際のターミナル録画です([再現方法](docs/demo/))。結果の報告方法を示しています。公開プロキシについては何も測定していません。

PyPI のパッケージ名は proxy-scraper-cli です(単独の名前はすでに使われています)。インストール後のコマンドは proxy-scraper です。--verify と --diagnose にはバージョン 1.30 以降が必要です。

プロキシを取得する 3 つの方法と、それぞれの「チェック済み」の意味:

コマンドプロキシの取得元チェックのタイミング所要時間
proxy-scraper --pick 5公開リストリストの作成時に GitHub のサーバーから。約 1 時間ごと1 秒未満
proxy-scraper --pick 5 --verify公開リスト今、お使いのネットワークから数秒から最長 1 分半
proxy-scraper -yツールが認識しているすべてのリスト今、お使いのネットワークから数分(1 時間ごとの実行では約 3 分)

利用できる機能

  • すべてのチェックで、結果を確認できます。 ターミナル、JSON、Python から、理由コード、対象、時刻とともに passed、failed、unavailable、skipped のいずれかが表示されます。実行されなかったチェックが成功として表示されることはなく、チェック対象がダウンしていても、その対象に対してチェックされたプロキシが失敗扱いになることはありません。→ チェックの状態
  • 必要なときに新鮮な状態を確認できます。 --pick --verify は、お使いのネットワークからいくつかのプロキシをチェックします。通常は数秒で完了します。--recheck ではお手持ちのリストに対して同じチェックを行い、--diagnose では 1 つのプロキシが動作しない理由を確認できます。
  • リスト以外の機能もあります。 ローカルでローテーションするプロキシサーバー、Python API、AI エージェント向けの MCP サーバー、Docker、curl、proxychains、Clash、sing-box 用のエクスポート機能を利用できます。

できないこと。 無料プロキシを運営しているのは見知らぬ人たちです。ある 1 時間のリストに載ったプロキシのうち、1 日後にも再びリストに載るのは約 4 分の 1 にすぎません。成功という結果は、1 つのネットワークからテスト対象に対して行った 1 回の測定に基づくものであり、次の 1 時間や利用したいサイトでの動作を保証するものではありません。HTTPS チェックは、1 つのテストホストに対する検証済み TLS 接続であり、セキュリティ評価ではありません。無料プロキシは公開データの取得やテストにのみ使用し、ログイン、支払い、個人情報を扱う用途には決して使用しないでください。→ 数値で見る無料プロキシの実態と、わからないこと · 比較 · 無料プロキシを運営しているのは誰か

リストだけが必要ですか? このツールは必要ありません。free-proxy-list では、プロトコル別・国別のプレーンテキストファイルでリストを公開しており、約 1 時間ごとに再構築しています。こちらから直接取得することもできます:all.txt · http.txt · socks4.txt · socks5.txt · proxies.json · その他の形式

利用先: 1 時間ごとに更新されるリストは、monosans/proxy-scraper-checker と gfpcom/free-proxy-list の組み込みソースです。

目次

インストール

pipx を使う場合(推奨。専用環境に proxy-scraper コマンドがインストールされます):

pipx install proxy-scraper-cli
proxy-scraper

PyPI 上のパッケージ名は proxy-scraper-cli です(単純な名前はすでに使われています)。コマンド名は proxy-scraper です。

macOS と Linux で Homebrew を使う場合:

brew install maximilianfeix/tap/proxy-scraper

Formula は各リリースから約1日以内に更新されます。

その他の方法:Docker、pip、高速なイベントループ、またはリポジトリから直接
# Docker – learned state and results stay in two folders next to you
mkdir -p proxy-data results
docker run --rm --user "$(id -u):$(id -g)" -v "$PWD/proxy-data:/data" -v "$PWD/results:/work/results" \
  ghcr.io/maximilianfeix/proxy-scraper --want 50 --https-only

# pip into the current environment
pip install proxy-scraper-cli

# optional: faster event loop on macOS/Linux
pipx install "proxy-scraper-cli[fast]"

# the latest main instead of the latest release
pipx install git+https://github.com/maximilianfeix/proxy-scraper.git

# no install at all
git clone https://github.com/maximilianfeix/proxy-scraper.git
cd proxy-scraper
pip install -r requirements.txt
python3 proxy_scraper.py

各リリースには、pip install <file>.whl でインストールできる wheel と、ghcr.io 上のマルチアーキテクチャイメージ(amd64/arm64)も含まれています。コンテナではウィザードは表示されず、すぐに実行されます。プロキシサーバーを使う場合は、--serve-open の代わりに --serve --serve-host 0.0.0.0 と -p 127.0.0.1:8899:8899 を指定すると、ポートは自分のマシン上でのみ開きます。または、--serve-open の代わりに -e PROXY_SCRAPER_SERVE_PASSWORD=… を設定してください。

bash、zsh、fish、PowerShell のタブ補完:

eval "$(proxy-scraper --completion zsh)"     # in ~/.zshrc (after compinit), same for bash in ~/.bashrc
proxy-scraper --completion fish > ~/.config/fish/completions/proxy-scraper.fish
proxy-scraper --completion powershell | Out-String | Invoke-Expression   # in $PROFILE

インストール後、学習した状態はユーザーデータフォルダー(~/Library/Application Support/proxy-scraper、%LOCALAPPDATA%\proxy-scraper、または ~/.local/share/proxy-scraper。PROXY_SCRAPER_HOME で変更できます)に保存され、結果は ./results に出力されます。クローンから実行すると、どちらもプロジェクト内に保存されます。プロキシが見つかる2回目の実行後に、GitHub のスターを一度だけ求められます。PROXY_SCRAPER_NO_STAR_HINT=1 を設定すると表示されません(CI では表示されません)。

引数なしで起動すると、ウィザードが検索対象を尋ねます:

セットアップウィザード イラスト:docs/make_demo.py がサンプルデータで描画した、実際のインターフェースです。表示されている数値は架空のものです。
プリセット内容
すべて検索すべてのプロトコル、最大限の収集
ブラウジングとウェブHTTP + SOCKS5、HTTPS 対応、匿名性は最低でも anonymous、3秒未満
最大限の匿名性HTTPS のみを使う elite SOCKS5
高速で安定1秒未満のプロキシのみ
今すぐ少しだけ25件見つかった時点で停止
前回の結果を再確認収集せず、数秒で完了
すぐにプロキシサーバーを起動前回の結果を再確認してから、:8899 で配信
前回と同じ前回の選択
カスタム …プロトコル、国、匿名性、HTTPS、対象サイト、レイテンシ、件数、チェックモード

キー:↑↓ 選択 · Space 切り替え · 1–9 移動 · Enter 次へ · Esc 戻る · q 終了。スクリプトや cron ジョブではウィザードは表示されません。オプションまたは -y を渡してください。

ライブプロキシリスト

自分でスキャンしたくない場合は、約1時間ごとに GitHub Actions がツールを実行し、結果を proxy-list ブランチに公開します。各エントリーは直近の実行で、最初のリクエスト、2回目のリクエスト、コンテンツチェックに合格しています(HTTPS テストはエントリーごとに記録されますが、必須ではありません)。上位ほどおすすめで、現在も稼働している可能性が高い高速なプロキシが先頭に表示されます。

リストだけが必要ですか? これらのリストは、独立したリポジトリ maximilianfeix/free-proxy-list にもあります。プロトコル、国、サイトごとのリストが1時間ごとに更新され、トップページには前回の実行結果の数が掲載されます。いつでも確認できるように、ウォッチまたはスターを付けてください。他のツールも利用しています:monosans/proxy-scraper-checker と gfpcom/free-proxy-list は、組み込みのソースとして使用しています。

過去数日間の稼働中プロキシ。プロトコル別に積み上げ表示し、実行ごとに再描画されます

→ ウェブサイトで閲覧する – 検索、種類・国・HTTPS・プロバイダー・レイテンシによる絞り込みができます。各プロキシがリストに登録されている期間や、今週の実行のうち何回リストに含まれたかを確認し、必要なプロキシだけをコピーまたはダウンロードできます。

各プロトコルと国には、それぞれプレーンテキストでダウンロードできるページがあります。例:SOCKS5 または ドイツ(country/de/proxies.txt)。

公開中のリストのウェブサイト

Proxies HTTP SOCKS4 SOCKS5 Updated

| リスト | 形式 | リンク | |---|---|---| | すべて | `socks5://1.2.3.4:1080` | [all.txt](https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/all.txt) | | HTTP · SOCKS4 · SOCKS5 | `1.2.3.4:8080` | [http.txt](https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/http.txt) · [socks4.txt](https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/socks4.txt) · [socks5.txt](https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/socks5.txt) | | HTTPS 対応のみ | `type://ip:port` | [https.txt](https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/https.txt) | | エリートのみ | `type://ip:port` | [elite.txt](https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/elite.txt) | | Google · Reddit · Amazon · Instagram · TikTok · Discord に接続できるもの(直近の実行では、1 回のテストリクエストで通常のページを取得) | `type://ip:port` | [google.txt](https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/works-with/google.txt) · [reddit.txt](https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/works-with/reddit.txt) · [amazon.txt](https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/works-with/amazon.txt) · [instagram.txt](https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/works-with/instagram.txt) · [tiktok.txt](https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/works-with/tiktok.txt) · [discord.txt](https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/works-with/discord.txt) | | 安定しているもの(今週の実行の 90 %+ でリストに掲載) | `type://ip:port` | [stable.txt](https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/stable.txt) | | 詳細情報付き | レイテンシー、国、HTTPS、匿名性、出口 IP、稼働時間、サイト | [proxies.json](https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/proxies.json) · [proxies.csv](https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/proxies.csv) |

現在、利用可能なプロキシが最も多い国

curl -s https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/socks5.txt | head

提供元: 実際に使える無料プロキシリストでは、毎時の実行におけるすべての提供元をランキングしています。各提供元の掲載プロキシ数、すべてのチェックに合格した数とその割合がわかります。同じデータは sources.json にあります。

経時的な変化: 毎日、最初の実行の proxies.json が、その年のリリースに gzip 圧縮アセットとして永久に保存されます。snapshots-2026 のように、proxies-2026-09-28.json.gz などが用意されており、数週間から数か月にわたる無料プロキシの動向を確認できます。

すべてのファイルは GitHub Pages でも公開されています。CDN の背後にあり、raw.githubusercontent のようなレート制限がなく、CORS ヘッダーも送信するため、ブラウザーから直接利用できます:https://maximilianfeix.github.io/proxy-scraper/socks5.txt。jsDelivr も利用できますが、数時間遅れる場合があります。

または、ツールにこのリストから処理を始めさせることもできます:proxy-scraper --recheck live はリストをダウンロードし、お使いのネットワークから再チェックします。全件スキャンではなく、1 分もかかりません。お使いのネットワークからまだ使えるプロキシの数は、リスト自体の数と大きく異なります。そのために再チェックを行います。--serve を追加すると、結果はローテーションプロキシになります。

AI エージェント向け(MCP)

proxy-scraper-mcp はMCPサーバーです。Claude Code、Claude Desktop、Cursor、VS Code、Codex、その他あらゆるMCPクライアントから、利用可能なプロキシを取得し、それらを経由してページを読み込めます。

Glama上のproxy-scraper MCPサーバー

ツール内容
get_proxies1時間ごとのリストからプロキシを取得します。直近の実行時に確認されたものです。プロトコル、国、HTTPS、エリート、データセンター以外、ブロックリスト未登録、安定性、稼働時間、レイテンシ、Google/Reddit/Amazonへの接続可否で絞り込めます
check_proxiesご利用のネットワークからプロキシを確認し、コードの実行環境で使えることを検証します(30~90秒、進捗を報告します)
fetch_url確認済みリストのプロキシ経由でページを読み込みます。失敗した場合は自動でプロキシを切り替え、読みやすいテキストを返します。HTTPSではTLSテストに合格したプロキシのみを使用します

エージェントには、次のように依頼できます。「英国から見たbbc.com/newsを読み込んで」、「ドイツのデータセンター以外のSOCKS5プロキシを5つ教えて」、「このサイトのうち、無料プロキシをブロックするものを確認して」。

uvが必要です。お使いのPythonが3.10より古い場合は、適切なバージョンを自動で取得します。Claude Code:

claude mcp add proxy-scraper -- uvx --python ">=3.10" --from "proxy-scraper-cli[mcp]" proxy-scraper-mcp

Claude Desktop、Cursor、その他多くのクライアント — MCP設定に次の内容を追加します(Claude Desktop:Settings → Developer → Edit Config、Cursor:~/.cursor/mcp.json)。

{
  "mcpServers": {
    "proxy-scraper": {
      "command": "uvx",
      "args": ["--python", ">=3.10", "--from", "proxy-scraper-cli[mcp]", "proxy-scraper-mcp"]
    }
  }
}
VS Code、Codex、Docker、またはuvを使用しない場合

VS Code — .vscode/mcp.json:

{
  "servers": {
    "proxy-scraper": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--python", ">=3.10", "--from", "proxy-scraper-cli[mcp]", "proxy-scraper-mcp"]
    }
  }
}

Codex — ~/.codex/config.toml:

[mcp_servers.proxy-scraper]
command = "uvx"
args = ["--python", ">=3.10", "--from", "proxy-scraper-cli[mcp]", "proxy-scraper-mcp"]

uvを使用しない場合: pipx install --python python3.12 "proxy-scraper-cli[mcp]"(Python 3.10以降)を実行し、コマンドとしてproxy-scraper-mcpを使用します。

Docker — Pythonは不要です。イメージに必要なものがすべて含まれています。

{
  "mcpServers": {
    "proxy-scraper": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/maximilianfeix/proxy-scraper", "--mcp"]
    }
  }
}

公式MCPレジストリにもio.github.maximilianfeix/proxy-scraperとして登録されています。レジストリを参照するクライアントは、そこからインストールできます。

このサーバーは、無料プロキシは見知らぬ人が運営しているため、ログイン情報、Cookie、個人データを経由させないよう、エージェントにも伝えます。ローカルアドレスとプライベートアドレスは拒否され、結果は作業中のプロジェクトではなく、proxy-scraperのデータフォルダーに保存されます。

特長

セットアップウィザード
引数なしで起動すると、矢印キーを使って必要なものを選ぶよう案内されます。プリセットを選ぶか、手順を追って設定できます。最後に、対応するコマンドラインが表示されます。

高速
厳選した350件以上のリストに加え、メタリストやGitHub検索で見つかったリスト(1時間ごとの実行で約750~820件)を並列取得します。大規模なリストはすべてのCPUコアで解析し、手書きのHTTP/SOCKSハンドシェイクはasyncioで直接実行して、一度に2,000件をチェックします。

実際の検証
見つかったプロキシはすべて、同じ出口IPを使って無関係なサイトへの2回目のリクエストにも応答する必要があります。360万件を超えるチェックでは、最初のリクエストに応答したプロキシの54%が2回目を通過できませんでした。さらに3回目のリクエストでは、テスト用の静的ページがバイト単位で完全に一致して届くことを確認します。ここまで進んだプロキシの5.2%は、これに失敗しました。プロキシがどちらかのチェックに失敗する理由(不安定、出口IPの変更、ページの変更や途中切断)は、これらの実行では記録されていません。1.30以降はすべての結果に理由コードが付与されます(数値の詳細、チェック状態)。さらに、テストホストに対して検証済みのTLS証明書を使ったトンネル経由のHTTPS、匿名性レベル(elite / anonymous / transparent)、出口IPの国も確認します。

実行するたびに学習
ソースごとのヒット率、稼働中のプロキシの履歴、使用不能または古くなったリストの自動削除に対応しています。-l 5000を指定すると、任意の候補ではなく、最良の候補5,000件を取得します。

新しいソースを自動で発見
GitHubでメンテナンスが活発なプロキシリストを検索し、他者が管理するソースリストも読み込みます。スパム目的のクローンサイト群や単なるミラーを検出します。

フィルターと対象サイト
--target google.comを指定すると、サイトに実際に接続できたプロキシだけが対象になります。多くの公開プロキシは大手サイトに拒否されます。国、HTTPS、匿名性、レイテンシで絞り込み、条件に合うプロキシが十分に見つかった時点で--want 50により停止できます。フィルターを使うと処理が速くなることもあります。--max-latency 1000を指定すると、遅いプロキシは8秒ではなく1秒で打ち切られます。

ライブダッシュボード
速度チャート、レイテンシのヒストグラム、プロトコル、国、最新のヒットをリアルタイムで表示します。Ctrl+Cを押せばいつでも停止し、すべて保存できます。

ローテーションプロキシサーバー
--serveを指定すると、見つかったプロキシをローカルプロキシに変換し、接続ごとに異なるプロキシを経由します。接続が停止した場合は自動的にフェイルオーバーします。

あらゆる環境で動作
macOS、Linux、Windowsに対応し、Python 3.9~3.14で動作します。依存関係はrichとcertifiの2つだけです。ファイアウォールがプロキシをブロックしている場合も検出します。

徹底的にテスト済み
Linux、macOS、Windowsで、Python 3.9、3.11、3.13、3.14を使い、既知の欠陥を持つ実際のミニプロキシをlocalhost上で動かして、1,100件以上のテストをオフラインで実行します。

リストをダウンロードするだけではだめですか?

リストに載っているのは、作成者が作成時に使えたものです。このツールが追加する機能は次のとおりです。他のプロジェクトが独自のチェックについて公開している内容は比較をご覧ください。他のリストについては測定していません。

proxy-scraper
使用直前に、お使いのネットワークからチェック--pick --verify、--recheck、またはスキャン
すべてのチェック結果と理由、時刻JSON の checks、--diagnose
2 回目のリクエストでも同じ出口 IP が表示されることを確認常に試行します。接続先がダウンしている場合、独自の実行ではプロキシを unavailable として保持しますが、時間ごとのリストと --verify では保持しません
テストページがバイト単位で一致することを確認同じです
証明書が検証される HTTPS テスト(テストホスト 1 つ)--fast の場合を除きます
プロキシごとの匿名性レベルと国対応しています
お使いのターゲットサイトに接続できるプロキシのみ--target
有用なソースを学習対応しています
単一のローテーションプロキシとして使用可能--serve
プロキシを取得する API(proxy_pool と同じパス)/get
実行不要ですぐに使えるリストライブリスト

名称と日付を明記した、他のツールやリストとのタスク別の比較。

使用例

# 50 proxies that can do HTTPS – then stop
proxy-scraper --want 50 --https-only

# only Germany, Austria and Switzerland, the 20,000 most promising candidates
proxy-scraper --country DE,AT,CH -l 20000

# fast elite SOCKS5 proxies
proxy-scraper --types socks5 --anonymity elite --max-latency 1500

# 20 proxies that really reach Google AND Discord
proxy-scraper --target google.com --target discord.com --want 20

# only recheck the last hits (plus history) – takes seconds
proxy-scraper --recheck

# wizard with defaults – it keeps what you already passed
proxy-scraper -i --country DE

# which sources deliver the most?
proxy-scraper --list-sources

クローンから実行する場合は、proxy-scraper を python3 proxy_scraper.py に置き換えてください。

Python から
from proxyscraper import check_proxies, find_proxies

if __name__ == "__main__":  # needed on macOS/Windows, the parser uses a process pool
    for p in find_proxies(want=20, https=True, countries=["DE", "NL"], no_datacenter=True):
        print(p.url, p.latency, p.country, p.org)

    alive = check_proxies(["socks5://1.2.3.4:1080", "5.6.7.8:3128"])  # your own list

コマンドラインと同じ実行内容です。ソースの取得、学習、すべてのチェック、結果ファイルの生成を行います。ターミナルへの出力はありません。各結果には url、latency、exit_ip、https、anonymity、country、asn、org、hosting が含まれます。どちらにも非同期版(find_proxies_async、check_proxies_async)があります。

新たにスキャンする必要がありませんか? live_proxies は代わりにライブリストを使います。チェックは行わず、1 回ダウンロードするだけで、約 1 秒で完了します。

import itertools, requests
from proxyscraper import live_proxies

proxies = live_proxies(types=["socks5"], https=True, min_uptime=90)  # the reliable ones this week
pool = itertools.cycle(p.url for p in proxies)
r = requests.get("https://api.ipify.org", proxies={"https": next(pool)}, timeout=15)  # pip install "requests[socks]"

find_proxies と同じフィルターに加えて、min_uptime、works_on(["google"]、"reddit"、"amazon"、"instagram"、"tiktok"、"discord")、limit を指定できます。各結果には uptime_24h、uptime_7d、first_seen、up_for_hours、sites も含まれます。

ライブラリに再試行を任せることもできます。ProxyRotator はリスト経由で URL を読み込み、プロキシに問題があると次のプロキシに切り替えます。HTTPS では、TLS が検証済みのプロキシのみを使用します。

from proxyscraper import ProxyRotator

with ProxyRotator(country="DE") as rotator:
    r = rotator.get("https://httpbin.org/ip")
    print(r.status, r.text, "via", r.via)

通常は数秒で完了しますが、プロキシが連続して多数ダウンしている場合は 1 分かかることがあります(timeout= は試行ごとに適用されます)。asyncio のコードでは、async with と組み合わせて aget() を使えます。

すでに requests、httpx、Playwright、Scrapy を使っていますか? proxy_url() を使うと、ローカルのプロキシアドレス 1 つで、裏側でローテーションできます。接続のたびにリスト内の別のプロキシを経由し、優先順位の高いものから使い、応答のないものはスキップします。

import requests
from proxyscraper import ProxyRotator

with ProxyRotator(country="DE") as rotator:
    proxy = rotator.proxy_url()          # http://country-de:…@127.0.0.1:…
    requests.get("https://api.ipify.org", proxies={"http": proxy, "https": proxy})
    # httpx.Client(proxy=proxy) · scrapy: meta={"proxy": proxy} · curl -x "$proxy"
    # Playwright wants the login apart: chromium.launch(proxy=rotator.playwright_proxy())

127.0.0.1 上でランダムなパスワードを使って実行され、新しい時間ごとのリストを自動的に取り込み、with ブロックの終了時に停止します。

ローテーションプロキシサーバー

リストも便利ですが、通常はプロキシアドレスを1つ入力するだけで、その先で接続を試し続ける仕組みがあれば十分です。

proxy-scraper --recheck --serve     # recheck the last hits, then go – takes seconds
curl -x http://127.0.0.1:8899 https://api.ipify.org              # a different IP every time
curl -x socks5h://127.0.0.1:8899 https://api.ipify.org           # SOCKS5 on the same port
curl -x http://country-de:[email protected]:8899 https://api.ipify.org # only German exits
curl -x http://session-cart42:[email protected]:8899 https://shop.example  # same proxy for this session
curl http://127.0.0.1:8899/__proxy-scraper/status                # pool and counters as JSON
curl http://127.0.0.1:8899/__proxy-scraper/metrics               # the same for Prometheus/Grafana

商用のローテーションプロキシと同様に、ユーザー名で希望を指定します。country-XX、type-http|socks4|socks5、session-NAME を組み合わせて指定できます(country-us-type-socks5-session-a)。HTTP(Proxy-Authorization)と SOCKS5(ユーザー名/パスワード認証)で動作します。デフォルトではパスワードは無視され、サーバーは 127.0.0.1 のみでリッスンします。

ほかのマシンからアクセスするには、パスワードを設定してください。その場合、すべてのクライアントが HTTP と SOCKS5 のどちらでもパスワードを送信する必要があり、ステータスページでも Basic 認証が必要になります。

export PROXY_SCRAPER_SERVE_PASSWORD=$(openssl rand -hex 16)   # the env var keeps it out of `ps`
proxy-scraper --recheck --serve --serve-host 0.0.0.0
curl -x "http://country-de:$PROXY_SCRAPER_SERVE_PASSWORD@your-server:8899" https://api.ipify.org

パスワードを設定しない場合、サーバーは 127.0.0.1 以外のアドレスでは起動しません。そうしないと、ポートにアクセスできるすべてのユーザーが使えるオープンプロキシになってしまいます(Docker は ufw などのホストファイアウォールを越えてポートを公開します)。ファイアウォールや -p 127.0.0.1:… によってすでに外部からのアクセスを防いでいる場合は、--serve-open でその旨を指定してください。用意されている compose.yaml は、ライブリストを使って Docker でサーバーを起動します。パスワード、ヘルスチェック、ボリューム内に保存される学習済み状態も設定されます。.env に PROXY_PASSWORD=… を設定してから、docker compose up -d を実行してください。

オプション説明
--rotate weightedデフォルト:高速で実績のあるプロキシをより頻繁に使い、すべてのプロキシに機会を与えます
--rotate random / round-robin均等に、ランダムまたは順番に選びます
--rotate fastest使用中でないプロキシのうち、常に最速のものを選びます
--sticky 300同じサイトには5分間、同じプロキシを使います(ログイン、カートなど)
  • スティッキー設定がない場合、接続ごとに異なるプロキシを使用します。高速で実績のあるプロキシが優先されます
  • HTTPS の CONNECT と通常の HTTP リクエストに対応します。HTTP、SOCKS4、SOCKS5 のプロキシを背後に配置できます(SOCKS5 はプロキシ経由の DNS に対応)
  • HTTPS では、TLS 検証に合格したプロキシが優先されます。現時点で条件に合うプロキシがない場合(country-de のような希望に一致しない、またはすべて利用できなくなった場合)は、ほかのプロキシを使います。クライアント側の証明書チェックにより、暗号化を破るプロキシは引き続き検出されるため、証明書チェックは有効のままにしてください
  • プロキシがトンネル内で応答しない場合や、TLS の代わりにエラーページを返す場合は、最初のパケットが通知なく次のプロキシに送られます
  • 3回連続で失敗すると、そのプロキシはローテーションから外れます。5分ごとに再チェックされ、再び動作するようになれば復帰します
  • --serve-refill 6 は、バックグラウンドで6時間ごとに新しいプロキシをチェックします(--recheck live ではライブリスト、それ以外では前回の実行結果と履歴を使用)。同じチェックとフィルターを適用して見つかったプロキシを追加するため、何日も稼働するサーバーでも枯渇しません
  • --serve-host で指定しない限り、127.0.0.1 のみでリッスンします。必要に応じてパスワードを設定できます。リクエスト、成功率、プール、最新の接続をライブ表示します

ウィザードでは、これは**「今すぐプロキシサーバー」**です。

**ライブダッシュボード:**ブラウザーで http://127.0.0.1:8899/__proxy-scraper/ を開くと、プール、成功率、トラフィック、リクエストのライブチャート、国、最適なプロキシ、最新の接続が2秒ごとに更新されます。インターネットへの接続は不要で、--serve-password によりほかの機能と同様に保護されます。

ローテーションプロキシサーバーのライブダッシュボード:利用可能なプロキシ、成功率、1秒あたりのリクエスト数、国、最新の接続

プロキシプール API

プログラムによっては、プロキシそのものではなくプロキシの「アドレス」を必要とし、ブラウザーやワーカー、キューに渡す場合があります。同じポートで、通常の HTTP リクエストを送るとプロキシアドレスが返されます。

curl http://127.0.0.1:8899/get                          # one proxy as JSON, chosen like a connection would be
curl "http://127.0.0.1:8899/get?country=DE&https=1&format=txt"   # → http://203.0.113.7:8080
curl "http://127.0.0.1:8899/all?protocol=socks5&limit=20"        # the 20 best SOCKS5 proxies
curl "http://127.0.0.1:8899/report?proxy=203.0.113.7:8080&ok=0"  # it failed you – three times and it's out
エンドポイント機能
/get--rotate 戦略で選ばれたプロキシを 1 つ返します
/pop/get と同様ですが、返したプロキシはプールから削除されます
/all使用可能なすべてのプロキシを、優先度の高い順に返します(limit=N)
/count種類と国別の件数を返します
/delete?proxy=IP:PORTプロキシをプールから削除します
/report?proxy=IP:PORT&ok=0独自のリクエストからのフィードバックを送信します

/get、/pop、/all では、country=DE,AT、protocol=socks5、https=1、anonymity=elite、max_latency=1500 の各フィルターが使えます。また、プレーンな URL を返すには format=txt を指定します。--serve-password を設定している場合、ステータスページと同様に、API では Basic 認証が必要です。

jhao104/proxy_pool から移行しますか? エンドポイント、type=https、およびほとんどの JSON フィールド(proxy、https、region、check_count、fail_count など)は同じです。そのため、コードの接続先をポート 8899 に変更すれば、ほとんどの場合そのまま動作します(相違点は 3 つです。last_time はなく、anonymous は文字列ではなく true/false で、source は常に proxy-scraper です)。Redis は不要で、2 回目のリクエスト、コンテンツ、TLS の各チェックに合格したプロキシを利用できます。

import requests
proxy = requests.get("http://127.0.0.1:8899/get?type=https").json()["url"]   # e.g. socks5://…, type included
requests.get("https://example.com", proxies={"http": proxy, "https": proxy})

Discord と Telegram のボット

稼働中のリストを直接受け取ることもできます。bot/ は、実行のたびにサーバーへ投稿する Discord ボットです。最速のプロキシをまとめた概要、プロトコルごとの全リストを記載したファイル、そして /proxies type:socks5 country:DE https:true のようなスラッシュコマンドを提供します。招待すると読み取り専用チャンネルを自動で設定し、GitHub Action がサーバーに systemd サービスとしてデプロイします。同じプロセスで Telegram にも応答します。/proxy de socks5 で curl のコマンド例付きのプロキシを 1 つ、/proxies 10 us https で短いリストを取得できます。セットアップ方法は bot/README.md をご覧ください。

仕組み

手順の図:リスト、実際のハンドシェイク、同じ出口 IP を持つ 2 つのサイト、変更されていないテストページ、詳細
flowchart LR
    A[sources.json<br/>meta lists<br/>GitHub discovery] --> B[Fetch & parse<br/>in parallel on all cores]
    B --> C[Prioritize<br/>history → good sources → rest]
    C --> D[Check<br/>HTTP · SOCKS4 · SOCKS5]
    D --> E[Details<br/>HTTPS · anonymity · country]
    E --> F[results/]
    D -. hit rate per source .-> G[(learned state)]
    G -. next run .-> C
  1. ソース – sources.json にある厳選リスト、メタソース(プロキシソースのリストを管理する他のプロジェクト)、および1日1回行われる、積極的にメンテナンスされているリポジトリの GitHub 検索です。検索結果は以前の検索で見つかったものに追加されます。3週間検索で見つからなかったリストは除外されます。
  2. 収集 – プレーンテキスト、HTML テーブル、JSON API、type://ip:port 形式の行を認識し、プライベートアドレス範囲と予約済みアドレス範囲は除外します。前回の実行から変更されていないリストは 304 を返し、ローカルキャッシュから読み込まれます。直後に再実行すると、変更されたものだけが読み込まれます(ログに記録されたある1時間ごとの実行では、746件中431件のリストに変更がなく、52 MB でした)。
  3. 優先順位付け – 既知の動作するプロキシを先にし、その後、ソースの学習済み成功率順に並べます。
  4. チェック – 各プロキシは、チェック先(checkip.amazonaws.com。予備として ifconfig.me、ipinfo.io、wtfismyip.com、ident.me を使用し、いずれも Cloudflare の背後にはありません)から出口 IP を取得し、有効な「国外」の IP を返す必要があります。実行中にチェック先が停止した場合、ツールは別のチェック先に切り替え、影響を受けたプロキシを再チェックします。これにより、障害から統計が学習されるのを防ぎます。後続のチェック先に対するチェックに失敗した場合は、そのチェック先に直接問い合わせます。そこからも応答がなければ、プロキシのチェック結果は failed ではなく unavailable になります。自分の IP をそのまま返すプロキシは除外されます。次に httpbin.org 経由で2回目のリクエストを行い、同じ出口 IP が確認される必要があります。最初のチェックで「200 + IP」だけを返すプロキシはここで失敗し、不安定なプロキシや出口 IP が切り替わるプロキシも失敗します。最後に、プロキシを使わずに取得した場合とバイト単位で一致する静的 HTML ページが返される必要があります。各チェックの結果が、結果に記録されます。
  5. 国とプロバイダー – 無料の DB-IP データベースを使ってオフラインで調べます。プロバイダー(ASN)と、プロバイダー名がホスティング会社らしいかどうかも含まれます(調査したリストではエントリーの45%〜65%)。データベースは月に1回ダウンロードされ、検索は約2 µs で完了します。データベースで確認できない少数のアドレスに限り、ip-api.com に問い合わせます。
  6. ブロックリスト – 出口 IP ごとに SpamCop へ DNS ルックアップを1回行い、実行中は結果をキャッシュします。調査したリストではエントリーの28%〜43%がリストに登録された IP から接続しており、そのリストを利用するサイトでは CAPTCHA が表示されたり、接続がブロックされたりします。--no-blocklisted で除外できます。DNS リゾルバーが SpamCop に拒否される場合(大手のパブリックリゾルバーが該当します)、推測で判断せず、ルックアップをスキップします。
  7. 学習 – 成功率と履歴が保存されます。成功実績がない、1週間コンテンツに変更がない、または恒久的に到達できないソースはスキップされます。
📸 ライブダッシュボードと最終レポートを見る
チェック中のライブダッシュボード

実行後の最終レポート 図:実際のインターフェースを、docs/make_demo.py でサンプルデータを使って描画したものです。表示されている数値は架空です。
独自のリスト
proxy-scraper --source https://example.com/my-list.txt --source socks5=./socks.txt   # on top of the built-in sources
proxy-scraper --only-sources --source bought.txt --want 50                            # only yours

ip:port を含むテキストなら何でも使えます。socks5://user:pass@host:port のような行は種類が保持されます。種類の指定がない行は、http=… と記述しない限り HTTP と SOCKS5 の両方として試されます。有料リストの多くで使われているログイン情報の形式 ip:port:user:pass を使う場合は、--recheck bought.txt、ウェブ上のリストには --recheck https://example.com/proxies.txt を使うか、リストを --recheck - にパイプで渡してください。ip:port:US:elite のようなリストも同じ形式に見えるため、ソースはこの形式を変更しません。

出力

実行ごとに専用のフォルダーが作成され、results/latest.txt には常に最新のフォルダー名が記載されます(macOS/Linux ではシンボリックリンク results/latest も作成されます)。

results/2026-09-24_18-42-07/
├── all.txt        socks5://203.0.113.10:1080   (fastest first)
├── http.txt       203.0.113.20:8080            (plain ip:port lists per type)
├── socks4.txt
├── socks5.txt
├── proxies.json   latency, country, HTTPS, anonymity, exit IP
└── proxies.csv

レシピ

前回の実行で最速だったプロキシを使う — 無料プロキシはすぐに使えなくなるため、実行から数分以上経過している場合は、まず --recheck を実行してください。

proxy-scraper --recheck -y
curl -x "$(head -1 results/latest/all.txt)" http://api.ipify.org

HTTPS では、proxies.json から "https": true のプロキシを選びます。以下の Python の例のように指定してください。

Python requests(SOCKS の場合は pip install "requests[socks]")

import json
from pathlib import Path

import requests

run = Path("results") / Path("results/latest.txt").read_text().strip()   # works on every OS
proxies = json.loads((run / "proxies.json").read_text())   # fastest first

for p in proxies:
    if not p["https"]:
        continue
    try:
        r = requests.get("https://api.ipify.org", proxies={"http": p["url"], "https": p["url"]}, timeout=8)
        print(p["url"], "→", r.text)
        break
    except requests.RequestException:
        continue  # free proxies come and go – just take the next one

httpx(pip install "httpx[socks]")— スキャンせず、1時間ごとのリストをそのまま使用します。

import httpx
from proxyscraper import live_proxies

for p in live_proxies(types=["http", "socks5"], https=True, min_uptime=90, limit=10):  # httpx can't do SOCKS4
    try:
        with httpx.Client(proxy=p.url, timeout=10) as client:
            print(p.url, "→", client.get("https://api.ipify.org").text)
        break
    except httpx.HTTPError:
        continue  # next one

aiohttp(pip install aiohttp aiohttp-socks — aiohttp 単体では SOCKS を利用できません)

import asyncio

import aiohttp
from aiohttp_socks import ProxyConnector, ProxyError
from proxyscraper import live_proxies_async


async def main():
    for p in await live_proxies_async(https=True, min_uptime=90, limit=10):
        try:
            async with aiohttp.ClientSession(connector=ProxyConnector.from_url(p.url)) as session:
                async with session.get("https://api.ipify.org", timeout=aiohttp.ClientTimeout(total=10)) as r:
                    print(p.url, "→", await r.text())
                    return
        except (aiohttp.ClientError, ProxyError, asyncio.TimeoutError, OSError):
            continue  # free proxies come and go – just take the next one

asyncio.run(main())

Scrapy — すべてのリクエスト(再試行を含む)を次のプロキシ経由で送信するダウンローダーミドルウェアです。Scrapy が対応しているのは HTTP プロキシのみです。https=True を指定すると、https:// ページをトンネリングできるプロキシが選ばれます。

import itertools

import scrapy
from scrapy.crawler import CrawlerProcess
from proxyscraper import live_proxies

PROXIES = [p.url for p in live_proxies(types="http", https=True, min_uptime=50)]
if not PROXIES:
    raise SystemExit("No proxy matches right now – loosen the filters (e.g. min_uptime)")
POOL = itertools.cycle(PROXIES)


class RotatingProxy:
    def process_request(self, request, spider=None):  # newer Scrapy leaves out spider
        request.meta["proxy"] = next(POOL)


class IpSpider(scrapy.Spider):
    name = "ip"
    start_urls = [f"https://api.ipify.org/?n={i}" for i in range(3)]
    custom_settings = {
        "DOWNLOADER_MIDDLEWARES": {f"{__name__}.RotatingProxy": 350},
        "RETRY_TIMES": 5, "DOWNLOAD_TIMEOUT": 15,
    }

    def parse(self, response):
        print(response.meta["proxy"], "→", response.text)


if __name__ == "__main__":
    process = CrawlerProcess()
    process.crawl(IpSpider)
    process.start()

Scrapy プロジェクトでは、RotatingProxy を middlewares.py に配置し、settings.py の DOWNLOADER_MIDDLEWARES に追加してください。長時間のクロールでは、プールをときどき再読み込みしてください。リストは1時間ごとに更新されます。

Selenium — Chrome と Firefox ではプロキシのログイン情報を送信できないため、代わりにローカルのローテーションサーバーを指定します。ページを読み込むたびに別の検証済みプロキシ経由で接続し、使えないプロキシは自動的にスキップされます。

proxy-scraper --recheck live --serve --https-only     # 127.0.0.1:8899, ready in about 30 s
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=http://127.0.0.1:8899")
driver = webdriver.Chrome(options=options)
driver.get("https://api.ipify.org")
print(driver.find_element("tag name", "body").text)     # a different IP on each start
driver.quit()

Firefox ではプロキシを設定値として指定します。options = webdriver.FirefoxOptions() を設定し、続けて options.set_preference("network.proxy.type", 1) を実行します。"network.proxy.http"/"network.proxy.ssl" は "127.0.0.1" に、"network.proxy.http_port"/"network.proxy.ssl_port" は 8899 に設定してください。--serve-host を指定せずにサーバーを起動すると、自分のマシンからのみ利用できます。ページが https:// の場合は --https-only を付けて起動してください。TLS 検証済みで HTTPS テストに合格したプロキシのみが使用されます。ブラウザーのセッションでは接続が維持されるため、ページごとに新しい IP を使うには、プロキシのログイン情報で session-NAME を指定する必要があります(Selenium では指定できません)。または、ドライバーを再起動してください。

proxychains、Clash/Mihomo、sing-box — --export で設定ファイルをすぐに作成できます。

proxy-scraper --want 30 -y --export proxychains,clash,singbox
proxychains4 -f results/latest/proxychains.conf curl https://api.ipify.org

clash.yaml にはすべての HTTP および SOCKS5 プロキシと、常に最速のものを選ぶ url-test グループが含まれます。singbox.json も sing-box 用に同様の設定を行い、SOCKS4 も含みます。また、ローカルプロキシを起動します。sing-box run -c results/latest/singbox.json を実行し、HTTP または SOCKS5 プロキシとして 127.0.0.1:2080 を使用してください。これら3つの設定では、CONNECT によるトンネリングができない HTTP プロキシは除外されます。これらのツールはすべての接続をトンネリングするためです。

ブラウザーと OS — --export pac を実行すると proxy.pac が作成されます。Firefox、Chrome(システム設定経由)、FoxyProxy、または macOS/Windows のプロキシ設定でこのファイルを指定すると、リクエストは最速の HTTP および SOCKS5 プロキシ上位30件を順番に経由します。いずれかが失敗すると、ブラウザーが自動的に次のプロキシに切り替えます。ローカル名とプライベート IP アドレスへの接続は直接行われます(10.example.com のようなホスト名はプライベートとは見なされません)。このファイルには DIRECT フォールバックがなく、ホスト名の名前解決も行いません。また、SOCKS4 は、ブラウザーが独自の DNS を使って名前解決することになるため除外されています。Firefox では次の2つの設定が重要です。SOCKS v5 使用時にプロキシ経由で DNS を解決する を有効にし、about:config で network.proxy.failover_direct を false に設定してください。そうしないと、すべてのプロキシが失敗した後に Firefox が直接接続してしまいます。インストールは不要です。最新リストは https://maximilianfeix.github.io/proxy-scraper/proxy.pac で1時間ごとに公開されます。

Proxifier(Windows、macOS)を使うと、プロキシ設定のないプログラムも含め、あらゆるプログラムをプロキシ経由で接続できます。--export proxifier を実行すると proxifier.ppx が作成されます。File → Import Profile からインポートすると、すべての接続が最速のプロキシ上位50件による冗長チェーンを経由します。Proxifier は順番に試し、応答した最初のプロキシを使用します。localhost への接続は直接行われます。HTTP プロキシはトンネリング(CONNECT)に対応する場合のみ、SOCKS4 はログイン情報が不要な場合のみ含まれます。Proxifier 4 が必要です。HTTPS テストに合格したプロキシを使うには --https-only を追加してください。 Burp Suite、OWASP ZAP、mitmproxy – ローテーションサーバーをインターセプトプロキシの背後に置くと、スキャンやブルートフォーステストを多数の IP から実行しながら、すべてのリクエストを確認できます。proxy-scraper --recheck live --serve で起動してから、次のように設定します。

ツール場所設定
Burp SuiteSettings → Network → Connections → Upstream proxy servers宛先ホスト *、プロキシホスト 127.0.0.1、ポート 8899 のルールを設定します。--serve-password を指定する場合は、Basic 認証を追加します(ユーザー名は any または country-de のような任意の希望、パスワードは指定したものです)
OWASP ZAPOptions → Network → Connection → HTTP Proxyホスト 127.0.0.1、ポート 8899 を設定し、認証でユーザー名(any または任意の希望)とパスワードを指定します。SOCKS ではなく HTTP 設定を使ってください。ZAP はループバックアドレスを SOCKS プロキシ経由で送信しません
mitmproxyコマンドラインmitmproxy --mode upstream:http://127.0.0.1:8899 --upstream-auth country-us:x

ユーザー名で指定する希望(country-us はすべての通信を米国のプロキシ経由にし、session-NAME はログインの一連の処理で出口 IP を固定します)は、プロキシのログイン情報としてサーバーに送信されます。mitmproxy はすぐに送信しますが、Burp と ZAP は要求されるまで送信しないことがあるため、そこで希望を利用する場合は --serve-password を指定してサーバーを起動してください。ツールの上流証明書チェックは有効のままにしてください(mitmproxy では --ssl-insecure を指定せず、Burp や ZAP では上流の「証明書エラーを無視する」を有効にしないでください)。無料プロキシは見知らぬ相手であり、このチェックによって HTTPS 通信の読み取りや改ざんを防げます。mitmproxy 12 で証明書チェックを有効にして、HTTP と HTTPS を mitmproxy およびローテーションサーバー経由でエンドツーエンドにテストしました。すべてのリクエストが米国のプロキシ経由で送信され、証明書の期限が切れたサイトへの接続は拒否されました。許可されている対象だけをテストしてください。

パイプで使う場合 – -o - はヒットしたプロキシを標準出力に出力し、インターフェースは標準エラー出力に表示します。

proxy-scraper --recheck live --want 20 -y -o - | grep '^socks5://' > socks.txt

手持ちのリストをチェックする場合 – --recheck - は標準入力からリストを読み込みます。形式は、ip:port の行、type://ip:port、ログイン情報(user:pass@ip:port または ip:port:user:pass)、JSON、CSV エクスポート、ウェブサイトから貼り付けた表(HTML または Markdown)に対応し、入力された順序が保たれます。お使いのネットワークから動作するものだけが出力されます。

curl -s https://example.com/proxies.txt | proxy-scraper --recheck - -o - > working.txt

タイプの指定がないプロキシは、HTTP と SOCKS5 で試します。SOCKS4 で試す場合は --types socks4 だけを指定してください。パスワードにカンマ、引用符、|、角かっこが含まれると、貼り付けたテキストとの区別がつきません。そのようなプロキシはファイルに1行ずつ記載し、--recheck file.txt を使ってください。

ローテーションサーバー経由で任意のツールを使う

proxy-scraper --recheck --serve &
export HTTPS_PROXY=http://127.0.0.1:8899 HTTP_PROXY=http://127.0.0.1:8899
pip download requests   # git, pip, npm & co. now go through the pool

GitHub ワークフローで使う場合 – アクションが後続のステップ用に動作するプロキシを選びます。

Marketplace · ワークフロー、入力、出力の詳細

- id: proxies
  uses: maximilianfeix/proxy-scraper@v1
  with:
    types: socks5
    https: true
    min-uptime: 90        # on the list for 90 %+ of the week
    min-speed: 100        # optional: downloaded 100+ KB/s in the last check
    works-on: google      # optional: google, reddit, amazon
    recheck: true         # optional: check them again from the runner
- run: curl -x "${{ steps.proxies.outputs.proxy }}" https://api.ipify.org

proxy は最速のプロキシ、file はすべてのプロキシを含むテキストファイル(最大数は limit で指定し、デフォルトは20)、count は件数です。一致するプロキシがない場合、fail-if-empty: false を指定していない限り、ステップは失敗します。

スキャンせずにシェルで使う場合 – --pick は、1時間ごとのリストから約0.5秒でプロキシを選びます。

curl -x "$(proxy-scraper --pick --https-only --min-uptime 90)" https://api.ipify.org
proxy-scraper --pick 10 --country DE --works-on google > de.txt
proxy-scraper --pick 5 --min-speed 200     # only ones that downloaded 200+ KB/s

「最速順」とは、最初の応答時間に、直近のチェックで測定したダウンロード速度を加味した順です。実際のページを使ったテストでは、小さなリクエストへの応答が最速の25件と比べ、ダウンロード速度が最速の25件は4倍のページを読み込めました。

何もインストールせずに使う場合 – ライブリストから直接利用します。

curl -s https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/https.txt | head -5

シェルのスニペットは macOS と Linux 向けで、results/latest が最新の実行結果を指します。Windows では、results/latest.txt にフォルダー名が記録されます。PowerShell では次のようにします。

$run = "results\$(Get-Content results\latest.txt)"
curl.exe -x (Get-Content "$run\all.txt" -TotalCount 1) http://api.ipify.org

オプション

すべてのオプションを表示
オプション説明
-i, --interactiveセットアップウィザード(引数を指定しない場合は自動的に表示されます)
-y, --yesウィザードを使わず、すぐに開始します
--types http socks5これらのプロトコルのみを対象にします
-l, --limit N有望度の高いプロキシのうち、上位 N 件のみを確認します
--want N条件に一致するプロキシが N 件見つかった時点で停止します
--country DE,ATこれらの国のみを対象にします
--https-onlyHTTPS をトンネリングできるプロキシのみを対象にします
--anonymity elite最低限必要な匿名性(anonymous または elite)
--max-latency MS最大レイテンシ
--no-datacenter出口が(おそらく)データセンターにあるプロキシを除外します。データセンターのプロキシはブロックされやすいためです
--no-blocklisted出口 IP が SpamCop のブロックリストに登録されているプロキシを除外します。これらのプロキシでは CAPTCHA が表示されやすいためです
--no-dnsblブロックリストの照会を省略します
--target URLこのサイトにアクセスできるプロキシのみを対象にします(複数回指定可能)
--recheck [FILE|URL|-|live]ファイル、URL、標準入力(-)、前回の実行結果、または公開中のライブリストからプロキシのみを確認します
--fastHTTPS テストを省略します(接続確認と匿名性のテストは実行されます)
--no-geo国の照会を省略します
-c, --concurrency N同時に実行する確認の数(デフォルト:2000)
-t, --timeout Sプロキシごとのタイムアウト(デフォルト:8 s)
--discover今すぐ GitHub で新しいソースを検索します
--no-cacheすべてのリストを再ダウンロードします(通常、変更のないリストは ETag によってスキップされます)
--list-sources [N]ソースのランキングを表示します(スクリプト用に --json を追加すると、URL、ステータス、ヒット率、確認数、最終変更日時を出力します)
--pick [N]1 時間ごとに確認されるリストから N 件のプロキシを表示して終了します(デフォルト:1)。スキャンは行わず、同じフィルターに加えて --min-uptime PERCENT、--min-speed KBPS、--works-on google,reddit,… を使用できます
--verify--pick と併用すると、候補をまずお使いのマシンから確認し、現時点で合格したものだけを表示します。指定したプロキシ数に対して候補を 5 件ずつ(10~60 件)確認し、一度に最大 8 件、最大 90 s まで実行します。合格数が N 件に満たない場合、終了コードは 3 です
--diagnose PROXY1 つのプロキシを確認し、各チェックの結果を状態ごとに表示します。終了コードは、失敗なしの場合は 0、チェック失敗の場合は 1、チェックを実行できなかった場合は 3 です
--json--pick、--diagnose(および --list-sources)と併用すると、結果を JSON として標準出力に出力します
--serve-host ADDRプロキシサーバーの待ち受け先アドレス(デフォルト:127.0.0.1。別のアドレスを指定する場合は、パスワードまたは --serve-open が必要です)
--serve-password SECRETクライアントはプロキシへのログイン時にこのパスワードを送信する必要があります。PROXY_SCRAPER_SERVE_PASSWORD の設定をおすすめします
--serve-openパスワードなしで --serve-host を許可します。ファイアウォールの内側、または docker -p 127.0.0.1:… を使用する場合に限ってください
--rotate STRATEGY · --sticky SECプロキシサーバーがプロキシを選択する方法については、上記を参照してください
--serve-refill HOURSプロキシの提供中に、HOURS ごとに新しいプロキシを確認し、ヒットしたものをプールに追加します
--serve [PORT]その後、127.0.0.1:PORT でローテーションプロキシとして提供します(デフォルト:8899)
-o FILEすべてのヒットをこのファイルにも書き込みます。-o - を指定すると標準出力に表示します
--export FORMATS他のツール用の追加ファイル:proxychains、clash、singbox、curl、pac、proxifier または all
-V, --versionバージョンを表示します
--completion SHELLbash、zsh、fish または PowerShell 用のタブ補完スクリプトを表示します

その他すべてについては、proxy-scraper --help を参照してください。

ヒント

GitHub の検索には、ログイン済みの gh または GITHUB_TOKEN 環境変数があれば十分です。トークンがない場合、API の制限は 1 時間あたり 60 リクエストで、検索対象は 40 リポジトリのみです。

GitHub Actions

このリポジトリでは、作業の一部を自動で行います。

ワークフロー内容
tests3 種類の OS × 4 種類の Python バージョンに加え、ビルドしてインストールしたパッケージを、プッシュやプルリクエストのたびにテストします
lintバージョンを固定した ruff を使用し、ローカルと CI で同じルールを適用します
codeqlプッシュのたび、および週に 1 回、セキュリティ分析を行います
proxy list約 1 時間ごとに、収集、チェックを行い、proxy-list に公開します。学習した統計情報は Actions キャッシュに保存されるため、クラウド上でもツールは改善し続けます
docker変更のたびにイメージをビルドし、その中で実際のスキャンを実行します。バージョンタグが付けられると、linux/amd64 と linux/arm64 を ghcr.io に公開します
releaseバージョンタグが付けられると、テスト、ビルド、スモークテストを行い、wheel を含む GitHub リリースを公開します
discord botbot/ 内に変更があるたびにボットをテストし、サーバーにデプロイします
Dependabotアクションのバージョンを最新の状態に保ちます

よくある質問

無料プロキシは誰が運営しているのですか?使うべきですか?

あなたのために無料プロキシを運営してくれる人は、ほとんどいません。公開リストに載っているものは、たいてい次のいずれかです。

  • 設定ミスのサーバー – 外部からの利用を想定していなかった Squid、ルーター、またはプロキシポートが開いたままのアプリです。
  • 意図的に公開されたプロキシ – 少数のボランティアや研究プロジェクト、そして一部を無料で提供し、残りを販売するサービスです。
  • 感染したマシン – 所有者が知らないうちにトラフィックを中継しているコンピューターや IoT デバイスです。住宅向けの出口の多くはこのタイプです。
  • 罠 – 通過する通信を記録するハニーポットや、広告やスクリプトを挿入するためにページを書き換えるプロキシです。

これは一般的な背景情報であり、このプロジェクトが測定した内容ではありません。チェックでは、誰がプロキシを運営しているのか、またその理由はわかりません。

proxy-scraper は、感染した家庭用ルーターと公開されたオフィスのプロキシを見分けられませんが、測定可能な内容はフィルタリングします。プロキシは、同じ出口 IP で独立した 2 つのリクエストに応答し、既知のページをバイト単位でそのまま返す必要があります。また、HTTPS はテスト対象ホストに対して証明書が検証された場合にのみカウントされます。各ヒットには、出口がデータセンター内にあるかどうかが示されます。

適切な用途は、公開データの利用、別の国からサイトがどのように見えるかの確認、自分のブロック設定やレート制限のテスト、研究などです。無料プロキシ経由でパスワード、Cookie、支払い情報、個人データを送信しないでください。また、HTTPS の証明書チェックは常に有効にしてください。許可されている範囲でのみ使用してください。

ほとんど何も接続できません。

多くの企業、学校、大学のネットワークでは、プロキシ接続がブロックされています。ヒット率が 0.2 % を下回るとツールが検出して警告します。スマートフォンのホットスポットなど、別のネットワークを使うと解決する場合があります。このような実行でも、学習済みの統計情報が格下げされることはありません。

Windows で動作しますか?

はい。PowerShell と Windows Terminal で動作します。uvloop は Windows にはないため、自動的にスキップされます。古い cmd.exe ウィンドウでは、フォントによって一部の記号が表示されない場合があります。

他のリストにあるとされる数より、見つかるプロキシが少ないのはなぜですか?

すべてのチェックに合格したプロキシだけを残すためです。同じ外国の出口 IP を示す独立したリクエストが 2 つあり、テストページが変更されずに届く必要があります。毎時実行するチェックでは、確認した 150,000 件の候補のうち約 1 % がこの条件を満たします。その時点で、チェックを実行したネットワークから利用できたものです。

ユーザー名とパスワードが必要なプロキシはどうなりますか?

socks5://user:[email protected]:1080 のような行では、認証情報が保持されます。HTTP プロキシでは Proxy-Authorization ヘッダーが使われ、SOCKS5 ではユーザー名とパスワードによる認証(RFC 1929)、SOCKS4 ではユーザー ID が使われます。自分のリストを使った --recheck でも同様に動作します。結果ファイルには認証情報が保持されますが、ターミナルには user:••• とだけ表示されます。

ライブリストはどのくらい新しいですか?

およそ 1 時間ごとに再生成されます。「更新済み」バッジには最後に実行した時刻が表示されます。無料プロキシは頻繁に利用できなくなるため、重要な用途では使用直前に proxy-scraper --recheck を実行してください。

無料プロキシを使っても安全ですか?

重要でない用途に限れば使えます。公開プロキシは見知らぬ人が運営しており、暗号化されていない情報はすべて読まれる可能性があります。パスワードや個人データを送信せず、合法的な目的に限って使用してください。

ロードマップ

次に取り組む内容はオープンなイシューにあります。アイデアや要望はイシューとして歓迎します。Hacktoberfest 期間中は、始め方のヒントが記載された初心者向けのイシューがあります。

v1.24〜v1.26 でリリース:パイプで渡したリスト用の --recheck -、Discord への接続を許可されるプロキシ、5 秒で試せる README、Docker イメージ内の MCP サーバー、ip:port:user:pass 形式で記述するログイン情報、1 行で読み込める Hugging Face データセット。

v1.22 と v1.23 でリリース:ローテーションサーバーのライブダッシュボード、--export pac と毎時更新される proxy.pac、プロキシがまだ稼働している可能性を数えて「最適なものを先に」表示する機能、独立したリポジトリに移したリスト(free-proxy-list)、Hugging Face 上の日次スナップショット、brew install、中国語の README、Python 3.14、Burp Suite、ZAP、mitmproxy 向けのレシピ。

v1.10〜v1.21 でリリース:プロキシごとのダウンロード速度と、あらゆる場所での「最適なものを先に」表示する機能、日次スナップショット、リクエスト、httpx、Playwright 用のローテーションプロキシ URL、スキャンなしで稼働中のプロキシを取得する --pick、jhao104/proxy_pool と互換性のあるプロキシプール API、--source を使った独自リスト、GitHub Action、Telegram ボット、週次レポート用の Atom フィード。

v1.8 と v1.9 でリリース:プロキシごとの稼働率と stable.txt、Google、Reddit、Amazon への接続を許可されるプロキシ、Python の live_proxies()、プロキシごとの週次チェックを掲載するページ、週次レポート、この README 内のライブチャート、ウェブサイトの共有可能なフィルター、他のスクレイパーのリストから収集したソース、型指定のないリストを HTTP と SOCKS5 の両方として試す機能、--export singbox、PowerShell の補完、httpx、aiohttp、Scrapy 向けのレシピ。

v1.7 でリリース:AI エージェントが稼働中のプロキシを取得し、それらを介してページを読み込める MCP サーバー、新しいソース 28 件、見つかった情報を保持する毎日実行の GitHub 検索、より見やすくなったウェブサイト。

v1.6 でリリース:すべての出口 IP を対象とするスパムブロックリストチェック、毎時更新されるライブリスト、プロトコルと国ごとのページ、任意で設定できるプロキシサーバーのパスワード、実行中に自動補充されるプール、compose.yaml、パイプ用の -o -、Discord ボット、新しいウェブサイトと README(すべて英語になりました)。

v1.5 でリリース:コンテンツ改ざんチェック、トレンドと安定したプロキシを表示するライブリストのウェブサイト、プロバイダー/データセンター情報、大幅に強化されたプロキシサーバー(ローテーション戦略、スティッキーセッション、SOCKS5 インバウンド、ステータスと Prometheus メトリクス)、--recheck live、Python API、シェル補完。以前に計測して見送り:追加の接続を使うプロトコル検出(#3)と IPv6(#1)。

貢献

バグ報告、新しいソース、プルリクエストを歓迎します。CONTRIBUTING.mdをご覧ください。また、各部分の連携についてはdocs/ARCHITECTURE.mdをご覧ください。要点は次のとおりです。

pip install -e ".[dev]"
python3 -m pytest          # runs offline – fake proxies on localhost
ruff check .
python3 docs/make_demo.py  # regenerate the images in this README
プロジェクト構成
proxy_scraper.py        entry point when run from a clone
bot/                    Discord bot for the live list (own requirements, deployed by GitHub Actions)
proxyscraper/
├── cli.py              arguments, wizard or direct start
├── app.py              one run in phases: network → jobs → check → learn & report
├── options.py          RunOptions + Filters – all settings in one place
├── pipeline.py         collect sources, prioritize, check loop
├── checker.py          the checks: basic, second request, content, HTTPS
├── handshake.py        HTTP/SOCKS4/SOCKS5 handshakes incl. login
├── judges.py           check targets, Cloudflare filter, failover
├── sources.py          source lists, meta sources, GitHub discovery, statistics
├── sources.json        curated sources
├── fetchcache.py       ETag cache for unchanged lists
├── parsing.py          find proxies in text, HTML and JSON
├── history.py          history of working proxies
├── geo.py              countries: offline first, ip-api.com as fallback
├── asndb.py            DB-IP provider database, datacenter heuristic
├── geodb.py            DB-IP country database (monthly, binary search)
├── targets.py          target sites for --target
├── output.py           result files
├── exporters.py        proxychains, Clash, sing-box, curl, PAC and Proxifier formats (--export)
├── server/             rotating proxy server (--serve): pool · http · upstream · socks · status · api · core
├── api.py              find_proxies() / check_proxies() for Python
├── agent.py            MCP tools without the SDK: live list, filters, fetch through proxies
├── mcp_server.py       MCP server (proxy-scraper-mcp) for AI agents
├── publish.py          live list for GitHub Actions
├── sourcepages.py      the ranking of the sources on the website
├── mirror.py           the same lists in their own repo (free-proxy-list)
├── paths.py            where state and results are stored
├── compat.py           differences between Unix and Windows
├── netio.py            small HTTP client on asyncio
└── ui/                 widgets · dashboard · report · wizard · serve · keys

コミュニティ

質問、アイデア、これを使って作ったものについてはディスカッションへ、バグについてはイシューへお寄せください。proxy-scraperで時間を節約できたら、⭐を付けると、ほかの人にも見つけてもらいやすくなります。

新しいソース、国、Python 3.14、サンプルなど、開発に協力してくださった皆さんに感謝します。

proxy-scraperへの貢献者

参加してみませんか?初心者向けのイシューで、最初に取り組む内容を確認できます。

同じ作者によるプロジェクト:dejabuilt。ビルドを始める前にGitHubを調べるエージェントスキルで、プロジェクトのアイデアがすでに存在するかどうかを、数値とともに教えてくれます。

proxy-scraperのスター履歴

謝辞

proxy-scraperは、無料のプロキシリストを公開している皆さんの活動を基盤としています。sources.jsonに記載されている皆さん、特に以下の方々に感謝します。

免責事項

このツールは、公開されているプロキシを収集し、動作するかどうかを確認するだけです。プロキシの使用方法はご自身の責任となります。アクセスするサイトの利用規約と、お住まいの地域の法律を遵守してください。


ドイツ製 · @maximilianfeix作 · MIT License · 変更履歴 · セキュリティ · コントリビューション

proxy-scraperで時間を節約できたら、⭐を付けると、ほかの人にも見つけてもらいやすくなります。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。