In this Article
データを収集する側も保護する側も、人工知能がウェブスクレイピングをどれほど変えたかを実感しているでしょう。5年ほど前まで、スクレイピングは主にHTMLの解析、IPローテーション、ブラウザのエミュレーションといった基本的な手法で成り立っていました。焦点はHTMLレスポンスの取得と、リクエストの簡単な偽装にあり、複雑な挙動やセッションコンテキストを確認する仕組みはありませんでした。今日のウェブははるかに賢くになっており、その背景にはAIがあります。
この記事では、AIの登場によってスクレイピングがどう変わったのかを、アンチ自動化システムの仕組みとあわせて解説します。実践的なヒントも紹介するので、ぜひ読み進めてください。DataImpulseは、9,000万件の自社保有(ファーストパーティ)レジデンシャルIPのネットワークを保有しており、匿名性を保ちながら現在の保護システムに対応するための、合法的な選択肢として利用できます。
重要なポイント
- AIシステムが登場する前は、レート制限やIPブラックリストなどのルールに基づいてブロックが行われていました。現在では、Cloudflareのようなシステムが機械学習を用い、挙動や技術面のシグナルを分析しています。
- IPアドレスだけで、リクエストの安全性が判断されることはもはやありません。
- AIシステムは、マウスの動き、スクロール、クリックのタイミング、ナビゲーションのパターンを評価します。こうした要素は、リクエストの技術的なパラメータよりも重要になることが少なくありません。
- スクレイピングでは、単にリクエストを送るだけでなく、シグナル全体を通じて実際のユーザーのように見せることが重要になっています。
- スクレイピング用のレジデンシャルプロキシは、IPアドレスの割り当てとローテーションを可能にし、アンチボット保護システムでの信頼スコアを高めるうえで非常に重要です。
従来のスクレイパーの問題点
RequestsやBeautifulSoupといったライブラリ、あるいは単純なHTTPリクエストを使う従来のウェブスクレイピング手法は、静的なサイトやAPIでは十分に機能します。Scrapyは大規模なデータ収集によく使われ、効率的なクローリング処理を構築できます。しかし現在のウェブでは、複雑な構造や追加の検証を伴うJavaScriptレンダリングの利用が増えているため、こうしたツールだけでは必要なコンテンツを常に取得できるとは限りません。
Seleniumのような高度なソリューションは、かつて複雑なウェブサイトを扱う標準的な手段でしたが、現在はPlaywrightのような新しいツールが主流になりつつあります。Playwrightは動的なSPAサイトへの対応に優れ、現代の自動化シナリオでより高速に動作します。
ただし、最新のブラウザツールであっても成功は保証されません。サイトはIPアドレス、ブラウザフィンガープリント、ユーザーの挙動、リクエスト頻度を分析するアンチボットシステムを積極的に導入しているためです。今日のスクレイピングには包括的なアプローチが必要であり、ツールは解決策の一部にすぎません。
アンチボットシステムはどのように自動化を検知するか
アンチボットシステムは、ネットワーク、クライアント、挙動に関するシグナルを組み合わせ、各HTTPリクエストをリアルタイムで分析する多層的なリスク評価システムです。
まずシステムはIPアドレスを確認し、続いてTLSやJA3、HTTPのフィンガープリントを確認します。その後、フィンガープリントを分析し、必要に応じてJavaScriptチャレンジを実行して、コードが実際に動作するかを確認します。現在のシステムでは、こうしたシグナルがすべてMLモデルに集約され、リスクスコアが算出されます。このスコアに基づいて、リクエストを許可するか、チャレンジを課すか、制限するかが決定されます。
-
IPレピュテーション
多くのシステムが最初に確認するシグナルはIPアドレスです。レピュテーション、国、インターネットサービスプロバイダー、利用履歴、ネットワークの種類が分析されます。たとえば、データセンターIPからのリクエストは自動化と関連付けられることが多い一方、レジデンシャルIPは実在のユーザーに割り当てられているため、通常はより信頼されます。そのIPが大量スクレイピングやその他の疑わしい活動にすでに使われたと確認されている場合は、リクエスト自体が分析される前にブロックされることもあります。
-
ブラウザフィンガープリンティング
IPが正当に見えても、アンチボットシステムはブラウザ環境を確認します。ブラウザフィンガープリンティングでは、User-Agent、画面解像度、フォント、CanvasやWebGLのフィンガープリント、APIなど、数十の項目を基に一意のクライアントプロファイルを作成します。これらのパラメータの組み合わせが不自然だったり、申告されたブラウザと一致しなかったりすると、そのリクエストへの信頼度は下がります。
-
HTTPとJavaScriptの検証
次の段階では、HTTPリクエスト自体とJavaScriptの実行が検証されます。保護システムはHTTPヘッダー、その順序や整合性を分析し、Cookieなど実在のブラウザに見られるパラメータを確認します。
さらに多くのウェブサイトはJavaScriptチャレンジを組み込み、単純なHTTPクライアントやボットではなく、実際のブラウザでページが開かれていることを確認します。
-
挙動分析とAIによる検知
現代のアンチボットシステムは機械学習モデルを用いて、マウスの動き、スクロール速度、クリック間隔、ページでの滞在時間、ナビゲーションのパターンを分析します。
-
トラフィックパターンの分析
アンチボットシステムは、個々のリクエストだけでなくトラフィック全体も分析します。反復的なパターン、不自然なリクエスト頻度、似通ったページ遷移、多数のIPアドレスからの同時アクセスを検出します。こうした分析は、個々のリクエストだけでは見えない、連携したスクレイピング活動の特定に役立ちます。
AIはボット検知をどのように変えたか
技術面では、人工知能によってアンチボットシステムはルールベースのエンジンからML駆動の意思決定パイプラインへと変化しました。以前は固定的なルールに基づいて判断していましたが、現在は各リクエストを一連の特徴量に変換し、機械学習モデルで総合的に評価します。
このモデルは多次元のシグナルを用いて、リクエストが自動化によるものかどうかの確率を推定します。if/elseのロジックに代わり、システムはリスクスコアを返す関数として機能します。このスコアはセッションのコンテキスト、リクエスト履歴、グローバルなトラフィックパターンに応じて動的に変化します。
スクレイパーの安定性と成功率を高める方法
- 評判の良いプロバイダーのレジデンシャルプロキシを使う
プロキシでは、IPの数より品質が重要です。レジデンシャルIPは、特に保護が厳しいサイトで、データセンターIPよりもレピュテーションが高く、ブロックされにくい傾向があります。安定した稼働率、高いリクエスト成功率、そして広い地理的カバレッジ。
DataImpulseは99.51%の成功率を提供し、DecodoやBright Dataといったプレミアムプロバイダーよりも75-88%低い価格を実現しています。サブスクリプションは不要で、トラフィックが失効することもありません。1GBあたり$1のプロキシが195か国以上で利用可能です。
- IPローテーションを設定する
ローテーションが頻繁すぎても、少なすぎても、結果に悪影響を及ぼす可能性があります。シナリオに応じて戦略を使い分けましょう。たとえば、大規模なデータ収集には自動ローテーションを伴う短いセッションを使い、認証情報やユーザーの状態を維持したい場合はスティッキーセッションを使います。
- 最新のブラウジングツールを統合する
JavaScriptレンダリングを行うサイトには、Playwrightなどのブラウザ自動化フレームワークを使うのが有効です。これらは実際のブラウザの挙動をより正確に再現し、JavaScriptを正しく実行できるため、成功率を大きく高められます。
- 一貫したブラウザフィンガープリントを維持する
User-Agent、HTTPヘッダー、タイムゾーン、ブラウザの言語、画面解像度、その他のパラメータは互いに一致していなければなりません。たとえば、Windows上のChromeのUser-Agentが、日本のタイムゾーンおよびブラウザ言語fr-FRと組み合わさっていると、不審に見えることがあります。
- リクエスト速度を制御する
スクレイパーが毎秒数百件のリクエストを送ったり、常に同じ間隔で実行したりすると、高品質なプロキシでも効果を発揮できません。同時実行数を制限し、妥当な範囲で遅延をランダム化し、サイトの制限を守ることが、ブロックの回避に役立ちます。
- 信頼性の高いエラー処理を実装する
スクレイパーは、一時的なエラー、HTTP 429、403、タイムアウトを自動的に処理できなければなりません。指数バックオフを用いたリトライ機構、自動的なIP変更、セッションの再作成により、長期的な処理の安定性を大幅に高められます。
- キャッシュを使い、スクレイパーのパフォーマンスを追跡する
同じリクエストを再送信しないでください。サイトがCookieやセッショントークンを使用している場合は、それらを再利用すべきであり、リクエストごとに新しいセッションを作成しないほうがよいでしょう。
よくある質問
ウェブスクレイピングに最適なプロキシは何ですか?
レジデンシャルプロキシはウェブスクレイピングによく推奨されます。その利点は、インターネットサービスプロバイダーの実在のIPアドレスを使用するため、トラフィックを自動的ではなく自然に見せられることです。データセンタープロキシは安価で高速ですが、簡単に検出される可能性があります。DataImpulseでは、レジデンシャル、データセンター、モバイル、プレミアムレジデンシャルの各プロキシを購入できます。
ブラウザフィンガープリンティングとは何ですか?
ブラウザフィンガープリンティングとは、ユーザーのブラウザやデバイスの特徴を調べることで、ユーザーを識別し監視する特定の手法です。保護システムはUser-Agent、タイムゾーン、フォント、対応APIなどのデータを収集し、それらが一意のフィンガープリントを形成して、本物のユーザーとロボットを区別するために使われます。
現代のスクレイピング作業において、PlaywrightはSeleniumより優れていますか?
はい、より速い結果とより安定した自動化が必要な場合、PlaywrightはSeleniumよりもうまく機能します。Seleniumはレガシーシステムやテスト環境で広く使われています。
スクレイピング時に403エラーが出るのはなぜですか?
403エラーは、サーバーがリクエストを受け取ったものの、それを認可したくないことを示します。これは通常、アンチ自動化システムが不自然な挙動を検出したときに発生します。データセンタープロキシ、一貫性のないフィンガープリント、欠落したCookie、異常なパターン、または過度なリクエスト頻度が原因である場合があります。その他の考えられるプロキシエラーについては、プロキシエラーの原因と解決策に関するこのDataImpulseのガイドをご確認ください。
AIを活用したアンチボットシステムは回避できますか?
はい、検出を避ける方法はいくつかあります。プロキシをローテーションしたりUser-Agentを変更したりするだけでは不十分な場合があります。その場合、開発者はDataImpulseのような信頼できるプロバイダーのレジデンシャルプロキシ、Playwrightや類似のツール、リトライロジック、現実的なパターン、適切なセッション管理を組み合わせます。
まとめ
現代のアンチボットシステムは、ボットそのものではなく異常を検出します。しかし、その判断はもはや単純ではありません。悪いIPを制限し、良いIPにはデータへのアクセスを許可するだけのモデルではなくなっています。現在のウェブサイトは、レスポンスを遅らせたり、コンテンツを削除したり、ページネーションのループを発生させたり、CAPTCHAを表示したりします。そして、リクエストが時間とともにどう変化するかを分析します。頻繁なIPローテーションは、活動を人間らしく見せないパターンを生む可能性があります。スクレイピングに適したプロキシを選ぶことが重要です。データセンターからのトラフィックは不自然なほど高速で、ASNの履歴を共有していることがあります。一方、レジデンシャルIPからのトラフィックは、アンチボットシステムにとって異常に見えにくくなります。
予測可能なタイミングでのリクエストを避け、失敗直後に再試行するのではなく、指数バックオフを実装しましょう。優れたクローラーは不要な繰り返しを減らし、より自然な挙動を保ちながら、一貫したセッションを維持します。それを支えるレジデンシャルプロキシも用意しましょう。


