
1. リストをダウンロード
curl -sL https://raw.githubusercontent.com/xyzs996/free-proxy-health-list/main/all.txt -o proxies.txt2. 読み込んでローテーション
import itertools, requests
proxies = [line.strip() for line in open("proxies.txt") if line.strip()]
pool = itertools.cycle(proxies)
def fetch(url):
for _ in range(10):
proxy = next(pool)
try:
return requests.get(
url,
proxies={"http": f"http://{proxy}", "https": f"http://{proxy}"},
timeout=8,
)
except requests.RequestException:
continue
raise RuntimeError("no working proxy")時間を節約するための注意点
無料プロキシは本質的によく失敗するので、上のループが肝心です。1 回の失敗を致命的とせず、必ず次のエントリを試してください。タイムアウトは短く — 死んだプロキシはリクエストごとにタイムアウト分をまるまる消費します — また公開間隔に合わせてリストを取得し直し、数時間前に失効したエントリを回し続けないようにしてください。robots.txt と対象サイトの規約を尊重してください。ローテーションは負荷を分散するためのもので、アクセス制御を回避するためのものではありません。
関連ガイド
公開スナップショットの利用範囲
無料の公開プロキシは不特定の第三者が運用し共有されています。パスワードやトークン、個人情報を送信しないでください。GitHub の利用規定に従い、スパム、攻撃、アクセス制御の回避、サイトポリシーに反する収集には使用しないでください。
無料の公開プロキシは不特定の第三者が運用し共有されています。パスワードやトークン、個人情報を送信しないでください。GitHub の利用規定に従い、スパム、攻撃、アクセス制御の回避、サイトポリシーに反する収集には使用しないでください。