無料プロキシを自動収集!HTTP/SOCKS5 リストを毎時更新する Python スクレイパー

タグ Pythonプロキシ自動収集スクレイピングHTTP/SOCKS5GitHub ActionsIPローテーションBeautifulSouprequestscolumnコラムlinuxLinuxwindowsWindowsGitHubオープンソースwatchttvvfree-proxy-list
🚀 今すぐ試せます! デモスクリプトをダウンロードして、解凍後にターミナルで bash ファイル名.sh を実行してください(中身を一度確認してから実行すると安心です)。 (macOS / Linux 環境が必要)

無料プロキシを自動収集!HTTP/SOCKS5 リストを毎時更新する Python スクレイパー

ひとことでいうと

free-proxy-list は、インターネット上に公開されているプロキシ情報を自動で集めて、使いやすい一覧ファイルに整えてくれる Python 製のツールです。HTTP と SOCKS5 という2種類のプロキシをまとめて収集し、proxy.txt というファイルに保存します。GitHub Actions(GitHub が提供する自動実行のしくみ)を使えば、1時間ごとに自動で最新リストへ更新することもできます。スクリプトが1本だけというシンプルな構成なので、コードを読んでスクレイピング(ウェブサイトから情報を自動収集する技術)の勉強をしたい方にも向いています。

こんな人におすすめ

1. ウェブスクレイピングやクローラーを作っている開発者 同じ IP アドレスから何度もアクセスするとブロックされるサイトがあります。複数のプロキシを順番に切り替えながら使えば、そのリスクを下げられます。このツールで常に新しいプロキシリストを手元に用意しておくと、開発がスムーズになります。

2. セキュリティ研究者・ネットワークエンジニア オープンプロキシ(誰でも使える公開プロキシ)がどこの国にどれだけ存在するかを調べたい場面があります。リストに地域情報が付いているので、国や地域ごとの分布を手軽に把握できます。

3. 自動化ツールを作りたいプログラマー 複数のプロキシをローテーション(順番に切り替えること)しながら動くボットやテストツールを作る際、定期的に更新される新鮮なプロキシプールが必要です。GitHub Actions と組み合わせれば、手動作業なしでリストを維持できます。

インストール・使い方

ターミナル(文字を打ち込んでコンピューターに命令を送る画面)を開いて、以下の手順を上から順に実行してください。コピー&ペーストでそのまま使えます。

Step 1: リポジトリをダウンロードする

git clone https://github.com/watchttvv/free-proxy-list.git
cd free-proxy-list

リポジトリ(ソースコードの置き場)を手元のパソコンにコピーします。cd は「そのフォルダに移動する」コマンドです。

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

pip install -r requirements.txt

pip は Python のパッケージ(追加機能のまとまり)を管理するツールです。このコマンドで requests(ウェブページを取得するライブラリ)と beautifulsoup4(HTML を解析するライブラリ)の2つが自動的に入ります。既存の Python 環境を汚したくない場合は、先に仮想環境(python -m venv venv で作れる、プロジェクト専用の隔離された Python 空間)を作ってから実行すると安心です。

Step 3: プロキシリストを生成する

python generate_proxy_list.py

本体スクリプトを実行します。公開プロキシサイトにアクセスして情報を収集し、同じフォルダに proxy.txt を作成(すでにある場合は上書き)します。

Step 4: 結果ファイルを確認する

生成された proxy.txt を開くと、以下のような行が並んでいます。

socks5://37.18.73.60:5566 [美国 加州 圣何塞]
http://123.143.162.221:6388 [韩国 首尔特别市]
socks5://35.183.59.99:5080 [加拿大 魁北克省 蒙特利尔]

プロトコル://IP アドレス:ポート番号 [地域情報] という形式で1行1エントリです。プロトコル(通信の種類)・接続先・おおまかな場所が一目でわかるようになっています。

動かしてみた

Python 3.12 の環境で依存パッケージをインストールしたところ、requestsbeautifulsoup4 の両方が問題なく導入できました。リポジトリにはあらかじめ収集済みの proxy.txt が含まれており、実際のプロキシエントリが格納されていることを確認できました。

ファイル構成はとてもシンプルで、4つのファイルだけで成り立っています。

./proxy.txt                  # 出力: 収集済みプロキシリスト
./requirements.txt           # 依存パッケージの定義
./README.md                  # プロジェクト説明
./generate_proxy_list.py     # 本体スクリプト

スクリプトが1本・依存ライブラリが2つという軽量構成なので、既存のプロジェクトに組み込む際も最小限の変更で済みます。Python 3.12 では requestsbeautifulsoup4 といった現行ライブラリとの互換性に問題はありませんでした。

デモについて

このツールはウェブサイトへの実際のスクレイピングが主な機能のため、ブラウザ上のサンドボックス(隔離されたお試し環境)でのデモ実行には向いていません。手元の Python 環境があれば、git clonepip install -r requirements.txtpython generate_proxy_list.py の3ステップで即座に動作確認できます。取得したリストはそのままローカルで活用できるので、セットアップのハードルは低めです。

実践のコツ

収集したプロキシを実際のリクエストに使う最小サンプルです。proxy.txt からランダムに1つ選んで接続を試みます。

import requests
import random

# proxy.txt から有効なエントリを読み込む
with open("proxy.txt") as f:
    lines = [l.strip() for l in f if l.strip() and not l.startswith("#")]

# ランダムに1つ選んで URL 形式に変換する
entry = random.choice(lines)
proxy_url = entry.split(" ")[0]  # "socks5://ip:port" の部分だけ取り出す

proxies = {
    "http": proxy_url,
    "https": proxy_url,
}

try:
    resp = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=5)
    print(resp.json())  # 例: {"origin": "37.18.73.60"}
except Exception as e:
    print(f"接続失敗: {e}")

実践で役立つポイントをまとめます。

  • timeout は短めに設定する: 公開プロキシは応答速度にばらつきがあります。timeout=5(5秒)程度にしておくと、応答しないプロキシで処理が止まらずに済みます。
  • SOCKS5 を使うときは追加パッケージが必要: pip install requests[socks] を実行してから使ってください。これで PySocks というライブラリが一緒にインストールされます。
  • 地域でフィルタリングする: proxy.txt の各行には [美国](アメリカ)や [韩国](韓国)などの地域タグが付いています。特定の国のプロキシだけ使いたい場合は、行を読み込む際に文字列の一致で絞り込むと便利です。
  • GitHub Actions で自動更新するには: フォーク(自分のアカウントにコピー)したリポジトリの Actions タブからワークフローを有効化するだけで、1時間ごとに自動収集・自動コミットが動き始めます。手動メンテナンスが不要になります。
  • 品質フィルタリングを加えると精度が上がる: 収集直後のリストには使えないプロキシも混在します。別のスクリプトで実際に接続テストを行い、成功したものだけを残す「死活チェック」処理を組み合わせると、実用的なプロキシプールが作れます。

活用例

  • IP ローテーションによるスクレイピング: 同一 IP への連続アクセスを分散させ、アクセスブロックのリスクを下げながらデータ収集するクローラーに組み込む。
  • 地域限定コンテンツのアクセステスト: 地域タグをパース(解析)して特定の国のプロキシだけを抽出し、地域ごとに表示が変わるウェブサービスの動作確認に使う。
  • プロキシ品質の自動監視パイプライン: 生成されたリストを定期的に接続テストするスクリプトと組み合わせ、生きているプロキシだけを絞り込む品質管理フローのデータ源として活用する。
  • GitHub Actions による完全自動更新: フォークしたリポジトリで Actions を有効化するだけで、毎時最新リストへの自動更新が走る。サーバー管理不要でプロキシプールを維持できる。
  • スクレイピング学習の教材: スクリプトが1ファイルで完結しているため、コードを読んで requestsbeautifulsoup4 の組み合わせ方を学ぶ入門教材として使いやすい。
  • ネットワーク調査・研究: オープンプロキシの世界的な分布や増減傾向を調べる際の収集基盤として、研究や教育目的のデータ取得に役立てる。

用語とポイント解説

プロキシ インターネットへのアクセスを仲介するサーバーのことです。かんたんに言うと「自分の代わりにウェブにアクセスしてくれる中継地点」です。プロキシを経由すると、相手のサーバーには自分の IP アドレスではなくプロキシの IP アドレスが見えます。

HTTP プロキシ HTTP や HTTPS の通信を中継するプロキシです。かんたんに言うと「ウェブブラウジングやスクレイピングに特化した中継役」です。ウェブサイトの閲覧やデータ取得で広く使われています。

SOCKS5 HTTP に限らず、TCP や UDP などあらゆる通信を中継できる汎用的なプロキシプロトコルです。かんたんに言うと「どんな種類の通信でも通せる、より万能な中継方式」です。HTTP プロキシより低いレイヤー(通信の基礎に近い部分)で動作するため、対応できるアプリケーションが多いのが特徴です。

IP ローテーション 複数の IP アドレスを順番に切り替えながらリクエストを送る手法です。かんたんに言うと「毎回違う出口から出かけることで、同一人物と気づかれにくくする方法」です。同じ IP からの大量アクセスによるブロックやレートリミット(一定時間内のアクセス制限)を回避するために使われます。

スクレイピング プログラムを使ってウェブサイトから情報を自動的に取得・収集する技術です。かんたんに言うと「ウェブページを自動で読み込んで、必要なデータだけを抜き出す作業」です。手作業では時間がかかる大量のデータ収集を自動化できます。

requests(ライブラリ) Python で HTTP 通信を行うための定番ライブラリです。かんたんに言うと「Python からウェブページを取得したり API にアクセスしたりするための便利な道具箱」です。シンプルな書き方でウェブへのリクエストを送れるため、スクレイピングや API 連携で広く使われています。

BeautifulSoup4 Python で HTML や XML を解析するためのライブラリです。かんたんに言うと「ごちゃごちゃした HTML の中から、欲しい情報だけをすっと取り出せる道具」です。タグや属性を指定して要素を検索できるため、スクレイピングの後処理で定番ツールとして使われています。

pip Python のパッケージ(追加機能のまとまり)をインストール・管理するツールです。かんたんに言うと「Python 向けのアプリストアのようなもので、欲しいライブラリを1コマンドで入れられる」です。pip install パッケージ名 の形式で使います。

仮想環境(venv) プロジェクトごとに独立した Python の実行環境を作るしくみです。かんたんに言うと「プロジェクトAで入れたライブラリがプロジェクトBに影響しないよう、環境を部屋ごとに分けるイメージ」です。python -m venv venv で作成でき、環境を汚さずに依存関係を管理できます。

GitHub Actions GitHub が提供する自動実行プラットフォームです。かんたんに言うと「あらかじめ決めたタイミングや条件でスクリプトを自動的に走らせてくれるサービス」です。cron スケジュール(定期実行の設定)を書くことで、毎時・毎日など好きなタイミングでスクリプトを動かせます。


無料プロキシリストの自動収集は、一度仕組みを作ってしまえばあとは自動で回り続けるのが魅力です。ぜひウェブスクレイピングの IP ローテーションや、地域ごとのアクセステスト自動化などに活用してみてはいかがでしょうか。