ウェブスクレイピング中のIP禁止を回避する方法:完全チェックリスト
IP禁止は運ではなく、予測可能な信頼スコアです。ここに完全なアンチバンスタックがあります:ローテーション、ペース調整、フィンガープリントの一貫性、IPの衛生管理、モニタリング。重要な順に説明します。
IP禁止は運のように感じますが、それはサイトが見えるデータから下した決定です:あなたのアドレス、その履歴、そしてトラフィックの動作です。アンチボットシステムは、バイトを送信する前に各接続に信頼スコアを割り当て、その後調整します。ウェブスクレイピング中にIP禁止を回避するためには、そのスコアを有利に働かせる必要があります:適切なIP、適切なペース、一貫したフィンガープリント、そしてソフトスロットルがハードブロックになる前に引き出すモニタリングです。ここに実際に効果を発揮する順序での完全なスタックがあります。
そもそもなぜサイトはあなたのIPを禁止するのか
検出はアドレス自体から始まります。IPはブロックで販売されるため、評判は伝染します:単一の/24サブネットは256のアドレスであり、いくつかの悪いものがブロック全体のスコアを下げます。同じ論理が自律システム番号(ASN)にまで拡大します - あるデータセンターASNから不正行為をすると、その下のすべてのIPが疑念を引き継ぎます。その上、システムは所有権メタデータからIPタイプを推測します:クリーンな家庭用接続は1.0近くの信頼スコアで始まり、忙しい公共Wi-Fiは0.5程度、共有データセンターIPはCAPTCHAをトリガーしたり、完全にブロックされたりするほど低く始まります。この単一の事実 - データセンターの範囲は安価であるため使い捨てである - が、彼らが最初に禁止される理由です。
IPをローテーションするが、正しい方法でローテーションする
ローテーションは基盤ですが、低信頼のIPの小さなプールをローテーションするだけでは同じブロックを広げるだけです。生のローテーション速度よりも重要なことが2つあります:IPタイプと多様性です。住宅用またはモバイルアドレスを使用して、各リクエストが本物の加入者のように見えるようにし、多くのサブネットとASNに分散させて、単一のブロックが疑わしいパターンを蓄積しないようにします。地理も重要です - 米国の小売業者は、外国のデータセンターよりも米国の住宅用出口をはるかに信頼しますので、ターゲットに出口国を一致させましょう。
ローテーティング住宅用ゲートウェイは、これら3つすべてを自動で処理します:90M以上のIPを超えるリクエストごとのローテーション、200以上の国での出口地理の一致、サブネットとASNの多様性が自動的に確保される十分に広いプールです。なぜこれが静的リストを上回るのかについては、IPローテーションに関する入門書でメカニズムを説明しています。

リクエストを人間のようにペース調整する
完璧なIPでも、タイミングがロボット的であればフラグが立ちます。人間は40リクエストを秒単位で正確な間隔で発射しません。ドメインごとの妥当な予算に同時実行数を制限し、リクエスト間にランダムなジッターを追加し、バーストを分散させます。目標は、サイトのレート制限を下回り、トラフィックパターン分析が探す機関銃のシグネチャを避けることです:
import random, time, requests
proxies = {"http": "http://USER:PASS@rotating.quantumproxies.io:8000",
"https": "http://USER:PASS@rotating.quantumproxies.io:8000"}
def polite_get(url):
time.sleep(random.uniform(1.5, 4.0)) # jitter, not a fixed delay
return requests.get(url, proxies=proxies, timeout=20)
ターゲットのオフピーク時間にスクレイピングし、すでに持っているページを再取得しないように積極的にキャッシュします。私たちの丁寧なスクレイピングガイドでは、スケールを維持しつつ適応的なペース調整についてさらに詳しく説明しています。
フィンガープリントを一貫させる
クリーンなIPでもボットのフィンガープリントがあれば、依然としてボットです。最も速い兆候はデフォルトのライブラリUser-Agentです - python-requests/2.xやcurlを広告するリクエストは即座にフラグが立ちます。完全で最新のブラウザヘッダーセットを送信し、内部で一貫性を保ちます:User-Agent、Accept、Accept-Language、およびClient-Hintsヘッダーはすべて同じブラウザを説明する必要があります。現代のシステムはこれらをクロスチェックし、ミスマッチ(例えばChrome UAとモバイルSafariのヒント)は、ヘッダーが全くないよりも速くブロックされます。私たちのUser-Agent戦略に関するノートでは、一貫性が巨大なローテーションリストを上回る理由を説明しています。
セッション、クッキー、ハニーポットトラップ
セッションレベルの2つの落とし穴。まず、ハニーポット:一部のサイトは、display:noneやvisibility:hiddenで隠されたリンクやフォームフィールドを植え付けますが、人間はこれを見ません。これを追跡すると、自動化されたと自己識別します。DOMを検査し、表示されていない要素をスキップします。次に、セッションの継続性:ログインとその後の呼び出しは同じ出口IPを保持する必要があるため、ステートフルフローにはスティッキーセッションを固定し、ステートレスページの取得には新しいローテーティングIPを使用します。ログインセッションを10のIPにまたがってバウンスさせること自体が禁止のシグナルです。
IPを燃やす前に品質を確認する
どのプール内のすべてのIPが同じようにクリーンではなく、評判は時間とともに変わります。大量のトラフィックをアドレスにルートする前に、その不正スコアとタイプを確認します。無料のIP品質チェッカーは、出口が住宅用かデータセンターか、すでにフラグが立っているかを教えてくれます - 2秒のチェックで、毒された範囲でジョブを燃やすことを防ぎます。私たちのIP品質スコアに関する詳細な説明では、その数字が実際に何を測定しているのかを説明しています。

自動的にモニタリングし、バックオフする
ブロックはシグナルであり、驚きではありません。ターゲットごとの403、429、およびCAPTCHAレスポンスのレートを追跡し、ブロック率の上昇をスローダウン、より強力なローテーション、または一時停止のトリガーとして扱います。ハードブロックを受けた瞬間にIPを退役させ、同じ焼き付けられた出口を再試行するのではなく - 禁止されたアドレスは次のリクエストで回復しません:
from collections import deque
recent = deque(maxlen=50) # rolling window of outcomes
def record(status):
recent.append(status)
blocked = sum(s in (403, 429) for s in recent)
if blocked / len(recent) > 0.2: # >20% blocked?
raise RuntimeError("block rate high - slow down / rotate")
戦いをやめてツールを切り替えるタイミング
ターゲットが攻撃的なアンチボットレイヤーを実行しており、クリーンな住宅用IPと一貫したヘッダーにもかかわらずブロック率が高いままである場合、ボトルネックはIPの衛生管理を超えてTLSやJavaScriptの領域に移動しています。実際のブラウザフィンガープリントを持ち、IPをローテーションし、ページをレンダリングする管理されたScraper APIは、DIYスタックをエスカレートするよりも通常は良い取引です。そして率直な注意:サイトの利用規約が明確に禁止しており、APIを提供している場合は、APIを使用してください - 率直さはコンバートし、訴訟はサブスクリプションよりも高くつきます。これは実用的なガイダンスであり、法的アドバイスではありません。
よくある質問
スクレイピング中にIPが禁止されないようにするにはどうすればいいですか?
各リクエストが異なる高信頼のIPを使用するように、ローテーティング住宅用またはモバイルプロキシを経由し、ターゲットに出口国を一致させ、ランダムな遅延でリクエストをペース調整し、完全で一貫したブラウザヘッダーセットを送信します。その後、ブロック率をモニタリングし、ハードブロックを受けたIPを再試行するのではなく退役させます。
すでにIPが禁止されている場合はどうすればいいですか?
クリーンプールから新しいIPに切り替えます - ローテーティングゲートウェイはこれを自動的に行います。許可されているサイトをスクレイピングしていて、リソースを乱用していなかった場合、誤って課された禁止を解除するようにサイトにメールで依頼することもできます。今後は、禁止される前にローテーションを行い、後ではありません。
ローテーティングプロキシはすべてのIPブロックを止めますか?
いいえ。ローテーションはボリュームベースの禁止を打ち破りますが、ボットフィンガープリント、ロボット的なペース調整、またはブラウザなしのTLSハンドシェイクは、クリーンなIPでもブロックされます。ローテーションは必要ですが十分ではありません - 一貫したヘッダー、人間のようなペース調整、そして難しいターゲットには実際のブラウザレンダリングを組み合わせてください。
住宅用プロキシは、禁止を回避するためにデータセンターよりも優れていますか?
禁止回避においては、はい。住宅用およびモバイルIPは実際のISP加入者から来るため、高い信頼スコアで始まり、ブラックリストに載ることはめったにありません。データセンターIPは安価で、連続したブロックで割り当てられ、サブネットで簡単にフラグが立ちます - 彼らは最初に禁止されます。寛容なターゲットにのみデータセンターを使用してください。
禁止を回避することは一つのトリックではなく、スタックです。クリーンなローテーティングIP、出口地理、人間のペース調整、一貫したフィンガープリント、IPの衛生管理、モニタリングが、影響の順にあります。最初の3つを正しく行えば、失敗リストのほとんどは発生しません。