ホーム / ユースケース / Web スクレイピング
Web スクレイピング用の無料プロキシ
単一 IP でのスクレイピングはすぐ BAN されます。新鮮な検証済み一覧をローテーションすればリクエストを多数の IP に分散できます — 毎時検証の無料一覧での方法を紹介します。
なぜプロキシをローテーションするのか
多くのサイトはリクエストが多すぎる IP を制限・BAN します。プロキシプールは各リクエスト(またはバッチ)を別のアドレスから出すため、どの IP もレート制限に達しません。無料プロキシはどれも数分で死にうるので、信頼できる方法は 1 つに頼らず多数の検証済みプロキシでローテーション+リトライすることです。
検証済み一覧を Python でローテーション
この例は JSON 一覧(速い順)を読み込み、順に回して、失敗したら次のプロキシで再試行します。
import requests
LIST = "https://raw.githubusercontent.com/xyzs996/free-proxy-health-list/main/proxies/all/data.json"
# 1
pool = requests.get(LIST, timeout=15).json()
def scheme(p):
proto = p["protocol"]; host = p["proxy"]
return f"socks5h://{host}" if proto.startswith("socks5") else \
f"socks4://{host}" if proto.startswith("socks4") else f"http://{host}"
def fetch(url):
for p in pool: # 2
px = scheme(p)
try:
r = requests.get(url, proxies={"http": px, "https": px}, timeout=8)
if r.ok:
return r.text
except requests.RequestException:
continue # 3
raise RuntimeError("all proxies failed")
print(fetch("https://httpbin.org/ip")[:200])
礼儀正しく
- リクエスト間にジッタ付き遅延(例:1〜5 秒)を入れる。
- 現実的な
User-Agentを設定する。 - 対象サイトの
robots.txtと規約を守る。 429 Too Many Requestsではバックオフ(長めに待つ)。- 一覧を定期的に更新する — 毎時再検証されます。
使用が許可されたデータだけを取得してください。アクセス制御の回避や規約違反にプロキシを使わないでください。
よくある質問
無料プロキシは Web スクレイピングに使えますか?
公開ページの中小規模スクレイピング、テスト、試作に最適です。個々のプロキシはすぐ死ぬので、多数でローテーション&リトライを。
IP BAN を避けるには?
リクエストごとにローテーション、遅延とジッタ、現実的な User-Agent、robots.txt 遵守、429 でバックオフ。