影のダンス:ユーザーエージェントとプロキシの調和したローテーション
多くの顔を持つ物語: ユーザー エージェントとプロキシを一緒にローテーションする理由
北の森では、ノウサギは季節に合わせて毛皮を変え、キツネは白樺の間を静かに移動し、同じ道を二度と辿ることはありません。同様に、広大なウェブからデータを収集する際には、デジタル監視員の監視の目から逃れ、邪魔されることのないよう、顔とパス、つまりユーザーエージェントとプロキシの両方を変更する必要があります。.
どちらか一方だけをローテーションさせるのは、新しい外套をまといながらも、同じ古い道を歩んでいるようなものです。真の匿名性と回復力は、パターンや足跡を定着させずに、両方を織り合わせることから生まれます。.
ユーザーエージェントとは何ですか?
ユーザーエージェントとは、ブラウザやボットがウェブサーバーに自己紹介する際に使用する音声のことです。サーバーに「私はWindowsのChromeです」や「私はiPhoneのSafariです」などと伝えます。この音声を変えることで、クローラーはそれぞれ異なるストーリーを持つ、複数の異なる訪問者として認識されます。.
ユーザーエージェントの例:
| ブラウザ | ユーザーエージェント文字列の例 |
|---|---|
| Chrome(ウィンドウズ) | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 |
| Firefox(Linux) | Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/117.0 |
| Safari(iOS) | Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1 |
プロキシとは何ですか?
プロキシは川にかかる橋のようなものです。リクエストは川を渡りますが、反対側のウェブサイトは橋の足跡しか認識せず、あなたの足跡は認識しません。プロキシを変更すると、あなたは複数の異なる橋を渡ることになり、そのたびに別の岸から来たように見えます。.
プロキシの種類:
| プロキシタイプ | 説明 | 使用事例 |
|---|---|---|
| HTTP/HTTPS | ウェブトラフィックの場合、最も簡単に使用できます | ほとんどのウェブスクレイピングタスク |
| SOCKS5 | さまざまなプロトコルをサポートし、より柔軟 | 高度な非HTTPトラフィック |
| 居住の | 実際のデバイスからの実際のIP | ステルス性は高いがコストが高い |
| データセンター | 速いが、簡単に検出される | 大量のスクレイピング、低いステルス |
- 無料のHTTPプロキシについては、 プロキシローラー, 、手入れの行き届いた空き地で、無料で新鮮なプロキシを集めることができます。.
パターン: 両方をローテーションさせる理由
ユーザーエージェントだけをローテーションさせると、キツネは新しいマスクをかぶって同じ痕跡を辿ります。プロキシだけをローテーションさせると、キツネは新しい痕跡を辿りますが、常に同じマスクをかぶっています。どちらのパターンもすぐに気づかれます。.
両方を同時に回転させ、リクエストごとに新しいマスクと新しいトレイルを組み合わせると、古い物語にあるように、気付かれずに森の中を移動できます。形を変える者、まったく同じになることはなく、決して見つからない者です。.
回転へのアプローチ
1. 同期回転(ペアリング)
リクエストごとに新しいプロキシと新しいユーザーエージェントを選択し、固定パターンがないようにする。これが最も効果的なクローキングです。.
Requests と ProxyRoller を使用した Python の例:
import requests
import random
# Fetch free proxies from ProxyRoller
proxy_list = requests.get('https://proxyroller.com/api/proxies?protocol=http').json()['proxies']
user_agents = [
# Add a variety of user agent strings here
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/117.0',
# ... more user agents
]
for _ in range(10): # For 10 requests, for example
proxy = random.choice(proxy_list)
user_agent = random.choice(user_agents)
proxies = {
'http': f"http://{proxy['ip']}:{proxy['port']}",
'https': f"http://{proxy['ip']}:{proxy['port']}",
}
headers = {'User-Agent': user_agent}
try:
response = requests.get('https://httpbin.org/ip', headers=headers, proxies=proxies, timeout=8)
print(response.json(), user_agent)
except Exception as e:
print(f"Failed with proxy {proxy['ip']}: {e}")
- 新しいプロキシを収集するには ProxyRollerのAPI.
2. プールの回転(ラウンドロビン)
プロキシ用とユーザーエージェント用の2つのリストを作成し、両方をラウンドロビン方式またはランダム方式で切り替えます。重要なのは、同じペアをあまり頻繁に繰り返し使用しないことです。.
3. ミドルウェアの使用(Scrapyの例)
Scrapy では、両方をローテーションするミドルウェアを実装できます。
# settings.py
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
'myproject.middlewares.RotateUserAgentAndProxyMiddleware': 400,
}
# middlewares.py
import random
class RotateUserAgentAndProxyMiddleware:
def __init__(self):
self.user_agents = [ ... ] # List of user agents
self.proxies = [ ... ] # List of proxies from ProxyRoller
def process_request(self, request, spider):
request.headers['User-Agent'] = random.choice(self.user_agents)
proxy = random.choice(self.proxies)
request.meta['proxy'] = f"http://{proxy['ip']}:{proxy['port']}"
比較表:ローテーションアプローチ
| アプローチ | 匿名 | 複雑 | 障害処理 | 適合性 |
|---|---|---|---|---|
| 単一UA回転 | 低い | 低い | 簡単 | 基本的なスクレイピング、低リスク |
| 単一プロキシ | 低い | 低い | 簡単 | 推奨されません |
| 同期 | 高い | 中くらい | 失敗を処理する必要がある | 生産、ステルス |
| プールローテーション | 中くらい | 中くらい | 失敗を処理する必要がある | 中規模 |
避けられない事態への対処:エラー管理
賢い森の住人が時折、道に倒れた木があることを予期するように、プロキシが失敗し、ユーザーエージェントが検出されることも想定しておく必要があります。常に:
- 例外をキャッチし、新しいペアで再試行します。.
- プールから無効なプロキシを削除します。.
- 応答コードを監視します (403、429 は、発見されたことを示します)。.
ツールとリソース
- プロキシローラー – 新しくて無料の HTTP プロキシ用。.
- ユーザーエージェント – ユーザーエージェント文字列の包括的なリスト。.
- スクレイピー – 高度なスクレイピングとミドルウェア制御用。.
- ドキュメントのリクエスト – Python での HTTP リクエスト用。.
森からの最後の言葉
スウェーデンの古い物語に倣い、身軽に賢く旅をしましょう。一歩ごとに顔と道を変えれば、網の守護者たちはただ通り過ぎる影だけを見るでしょう。一つ一つが前とは全く異なる影です。もし別の橋が必要になったら、プロキシローラーの空き地を探しましょう。そこにはたくさんの橋があり、すべての旅人が無料で渡ることができます。.
コメント (0)
まだコメントはありません。あなたが最初のコメントを投稿できます!