🎯 カスタマイズ可能で検出回避型のクラウドブラウザ。自社開発のChromiumを搭載し、ウェブクローラーAIエージェント向けに設計されています。👉今すぐ試す
ブログに戻ります

Pythonでプロキシを回転させる方法

Michael Lee
Michael Lee

Expert Network Defense Engineer

23-Sep-2025

はじめに
Pythonでのプロキシの回転は、安定した信頼性のあるウェブスクレイピングと自動化を保証します。単一のIPを使用すると、ブロックやレート制限が発生する可能性があります。このガイドでは、プロキシを効果的に回転させるための10の実用的な方法を紹介します。より迅速で簡単な解決策を求める場合は、プロキシの回転を自動的に処理するScrapelessの使用を検討してください。


1. プロキシのリストを手動で使用する

結論: リストから手動でプロキシを切り替えることで、検出を回避できます。

手順:

  1. プロキシのリストを準備する(proxies = ["http://ip:port", ...])。
  2. 各リクエストのためにrandom.choice(proxies)を使用してプロキシを選択する。
  3. プロキシをrequestsまたはhttpxに渡す:
python Copy
import requests, random

proxies = ["http://111.111.111.111:8080", "http://222.222.222.222:8080"]
proxy = random.choice(proxies)
response = requests.get("https://example.com", proxies={"http": proxy, "https": proxy})
print(response.text)

適用: 小規模なスクレイピングや、禁止されることなく複数のエンドポイントをテストする場合。


2. Requestsセッションでのプロキシ回転の使用

結論: セッションオブジェクトを使用すると、複数のリクエストにわたって一貫したプロキシの使用が可能になります。

手順:

  1. requests.Session()を作成します。
  2. 各セッションのためにリストからプロキシを割り当てる。
python Copy
import requests, random

session = requests.Session()
proxies = ["http://111.111.111.111:8080", "http://222.222.222.222:8080"]
session.proxies.update({"http": random.choice(proxies), "https": random.choice(proxies)})
response = session.get("https://example.com")
print(response.status_code)

適用: 永続的なセッションを必要とするページのスクレイピング時。


3. サードパーティのプロキシライブラリの使用

結論: requests-ip-rotatorのようなライブラリを使用すると、プロキシの回転が簡素化されます。

手順:

python Copy
# requests-ip-rotatorの例
from requests_ip_rotator import ApiGatewaySession
session = ApiGatewaySession("https://example.com")
response = session.get("https://example.com")
print(response.text)

適用: IP回転が必要なAPIや頻繁なリクエストに最適。


4. Torを使用したプロキシの回転

結論: Torは回路を介して無料のプロキシ回転を提供します。

手順:

  1. Torをインストールする(sudo apt install tor)し、stem Pythonライブラリをインストールします。
  2. Tor SOCKSプロキシ(127.0.0.1:9050)を介して接続します。
  3. TorコマンドでIPを変更します。
python Copy
import requests

proxies = {"http": "socks5h://127.0.0.1:9050", "https": "socks5h://127.0.0.1:9050"}
response = requests.get("https://example.com", proxies=proxies)
print(response.text)

適用: プロキシに支払うことなく匿名データをスクレイピング。


5. 回転プロキシプロバイダーの使用

結論: 有料プロバイダーは高い信頼性と速度を保証します。

手順:

  1. Luminati、ScraperAPI、またはScrapelessのようなサービスに加入します。
  2. 認証を使用して彼らのエンドポイントを利用します。
  3. 各リクエストに対してプロキシを自動的に回転させます。
python Copy
import requests

api_key = "YOUR_API_KEY"
url = f"http://proxyprovider.com?api_key={api_key}&url=https://example.com"
response = requests.get(url)
print(response.text)

適用: 最小限のダウンタイムでの大規模なスクレイピングプロジェクト。


6. Seleniumでのプロキシ回転

結論: ウェブ自動化には、IPの禁止を防ぐためのプロキシの回転が必要です。

手順:

python Copy
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import random

proxies = ["111.111.111.111:8080", "222.222.222.222:8080"]
chrome_options = Options()
chrome_options.add_argument(f'--proxy-server={random.choice(proxies)}')
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://example.com")

適用: 複数のIPでの自動ブラウジングとテスト。


7. Scrapyでのプロキシ回転

結論: Scrapyはプロキシ回転のためのミドルウェアをサポートします。

手順:

  1. HttpProxyMiddlewareを有効にします。
  2. settings.pyにプロキシのリストを定義します。
  3. リクエストごとにミドルウェアを使用して回転させます。
python Copy
DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 1,
}
PROXY_LIST = ['http://111.111.111.111:8080', 'http://222.222.222.222:8080']

適用: Scrapyスパイダーによる大規模なスクレイピング。


8. httpxによる非同期プロキシ回転の使用

結論: 非同期ライブラリにより、複数のプロキシで同時リクエストが可能になります。

python Copy
import httpx, asyncio, random

proxies = ["http://111.111.111.111:8080", "http://222.222.222.222:8080"]

async def fetch(url):
    proxy = random.choice(proxies)
    async with httpx.AsyncClient(proxies={"http": proxy, "https": proxy}) as client:
        response = await client.get(url)
        print(response.status_code)

asyncio.run(fetch("https://example.com"))

適用: 複数のURLに対する高速なスクレイピング。


9. Scrapelessでの自動プロキシ回転

結論: Scrapelessはプロキシの回転を自動的に処理し、開発を簡素化します。

利点:

  • 手動のプロキシリスト管理が不要
  • Pythonのスクレイピングスクリプトと統合
  • 高い同時接続性と信頼性をサポート

アプリケーション: 効率を追求する初心者とプロフェッショナルの両方に最適。


10. 環境変数を使用したプロキシの回転

結論: 環境変数を使用してプロキシ設定を動的に変更する。

手順:

  1. .envファイルにプロキシを保存する。
  2. スクリプトでプロキシを読み込み、ランダムに選択する。
python Copy
import os, random
from dotenv import load_dotenv
import requests

load_dotenv()
proxies = os.getenv("PROXIES").split(",")
proxy = random.choice(proxies)
response = requests.get("https://example.com", proxies={"http": proxy, "https": proxy})

アプリケーション: 設定可能なスクレイピングパイプラインに役立つ。


比較まとめ

メソッド 使いやすさ コスト スケーラビリティ 最適なユースケース
手動リスト 簡単 無料 小さなプロジェクト
リクエストセッション 簡単 無料 永続的なセッション
プロキシライブラリ 中程度 無料/有料 APIコール
Tor 中程度 無料 匿名スクレイピング
有料プロバイダ 簡単 有料 大規模スクレイピング
Selenium 中程度 無料/有料 自動化タスク
Scrapy 中程度 無料 大規模スパイダープロジェクト
Async httpx 難しい 無料 高い同時接続性
Scrapeless とても簡単 有料 オールインワンソリューション
環境変数 中程度 無料 設定可能なパイプライン

重要なポイント

  • プロキシを回転させることはブロックを防ぎ、スクレイピングの安定性を維持するために不可欠です。
  • Pythonは手動リストから非同期および有料ソリューションまで、多くの方法をサポートしています。
  • Scrapelessは最も簡単で信頼性の高い回転方法を提供します。

よくある質問

Q1:なぜPythonでプロキシを回転させるべきですか?
IP禁止やレート制限を避け、信頼性のあるスクレイピングを確保するためです。

Q2:回転用に無料プロキシを使用できますか?
はい、ただし信頼性や速度が低い場合があります。大規模なプロジェクトには有料サービスを推奨します。

Q3:Scrapelessはコーディングを必要としますか?
最小限のコーディングが必要で、Pythonスクリプトにシームレスに統合されます。

Q4:Seleniumでプロキシを回転させることはできますか?
はい、異なるプロキシサーバーでブラウザオプションを設定することで可能です。

Q5:どのくらいの頻度でプロキシを回転させるべきですか?
リクエスト量とターゲットウェブサイトのポリシーによります。


推奨ソリューション

手間のかからない体験を求めるなら、Scrapelessを試して、プロキシの回転を自動で処理し、手動管理ではなくデータ収集に集中しましょう。


参考文献

Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。

最も人気のある記事

カタログ