Web サイトにアクセスまたはスクレイピングしようとして「エラー 1020: アクセスが拒否されました」というページが表示された場合は、Cloudflare のボット保護に遭遇したことになります。これは、特に重要なデータを収集している最中の場合、非常にイライラする可能性があります。しかし、Cloudflare エラー 1020 とは正確には何で、何が原因で、Web サイトを正常にスクレイピングするためにエラー XNUMX を回避するにはどうすればよいでしょうか?
この詳細なガイドでは、Cloudflare エラー 1020 について知っておくべきことをすべて説明し、Web スクレイピング作業がブロックされるのを防ぐ実証済みのテクニックを共有します。飛び込んでみましょう!
Cloudflareエラー1020とは何ですか?
まず、Cloudflare とは何かを理解することが重要です。 Cloudflare は、セキュリティ、パフォーマンス、信頼性を向上させるために多くの Web サイトで使用されている人気のあるサービスです。重要な機能の 1 つは、受信トラフィックを分析し、疑わしいリクエストをブロックするファイアウォールと DDoS 保護です。
Cloudflareは、リクエストがWebサイトのファイアウォールルールのいずれかに違反していることを検出すると、リクエストをブロックし、1020「アクセスが拒否されました」エラーを返します。これは、悪意のあるボット、DDoS 攻撃、コンテンツスクレイピング、その他の望ましくない自動トラフィックから Web サイトを保護する Cloudflare の方法です。
表示される完全なエラー メッセージは次のとおりです。
"アクセスが拒否されました
エラーコード1020
何が起こったのか?
この Web サイトはオンライン攻撃から身を守るためにセキュリティ サービスを使用しています。」
Cloudflareエラー1020の原因は何ですか?
リクエストが 1020 エラーでブロックされる理由はいくつかありますが、一般的には、Cloudflare がリクエストに自動化されたもの、または悪意のある可能性があるものとしてフラグを立てたことを意味します。一般的な原因には次のようなものがあります。
- 送信するリクエストが多すぎる(リクエストの送信率が高い)
- 正規のユーザー ヘッダー (ユーザー エージェント、Cookie、リファラーなど) を使用していない
- あなたの IP アドレスはボット/スパムに関連して悪い評判を持っています
- ページには Javascript レンダリングが必要ですが、ボットは JS を実行しません
- 制限された領域 (ログイン ページ、管理パネルなど) にアクセスしようとしています。
- サイト所有者は、リクエストによってトリガーされる厳格なファイアウォール ルールを構成しました
基本的に、リクエストが Web ブラウザからの通常のユーザー トラフィックと十分に似ていない場合、リクエストはブロックされる可能性が高くなります。 Cloudflareのボット検出は非常に洗練されています。
Cloudflareエラー1020を修正する方法
つまり、サイトをスクレイピングしようとしているのに、恐ろしい 1020 エラーが発生し続けることになります。データ収集を続行できるようにするには、どうすれば問題を解決できますか?ここではいくつかのヒントとベストプラクティスを紹介します。
1. サイトに正常にアクセスできるかどうかを確認します
ボット保護を回避する前に、まず通常の Web ブラウザでサイトにアクセスできることを再確認してください。同じアクセス拒否メッセージが表示された場合、問題はスクレイピング ツールではなく、ユーザー側のネットワークまたは接続の問題です。
シークレット ブラウザ ウィンドウで URL にアクセスしてみてください。これでも問題が解決しない場合は、サイトが実際にダウンしているか、IP がブロックされている可能性があります。別のネットワークまたは VPN を試してください。
2. リクエスト速度を遅くする
ボットが検出される最も一般的な理由の 1 つは、単にリクエストを頻繁に送信しすぎることです。短期間にサイトにページ リクエストを大量に送信すると、確実にブロックされます。
人間のブラウジング動作をより適切にシミュレートするには、リクエスト間に遅延を追加します。通常は数秒で十分ですが、ボットに非常に敏感なサイトの場合は、リクエストの間に 10 秒以上の時間が必要になる場合があります。実験してスイートスポットを見つけてください。
3. IP アドレスとユーザー エージェントをローテーションする
もう 1 つの大きな危険信号は、すべてのリクエストが単一の IP アドレスから送信されている場合です。通常のユーザーはさまざまな IP を持っています。
プロキシ サーバーのプールを使用して、リクエストごとに IP アドレスをローテーションします。理想的には、これらは評判の良いプレミアム プロキシである必要があります。データセンターの IP をローテーションしてもブロックされる可能性があります。 IP ベースのブロックを回避するには、実デバイスからの常駐プロキシが最適です。
また、さまざまなブラウザ/デバイスを表す有効な循環ユーザー エージェント ヘッダーを必ず設定してください。
4. 人間のようなヘッダーと Cookie を使用する
実際の Web ブラウザがサイトにアクセスするときに送信するヘッダーを見てください。スクレーパーでそれらをできるだけ正確に複製するようにしてください。
特に、次のように設定します。
- 共通のユーザーエージェント文字列
- 参照元URL
- 言語とエンコーディング
- サイトが設定する Cookie
ブラウザ開発ツールまたは拡張機能を使用して、完全なヘッダーを表示できます。標準のものをすべて複製します。
5. Javascript レンダリングを処理する
一部のサイトでは、解決するために JS レンダリングが必要な Javascript チャレンジや CAPTCHA ページを使用しています。スクレイパーが JS を実行しない場合は、先に進むことができません。
Puppeteer や Selenium などのツールは、フルブラウザ環境でページをレンダリングできます。 JS を多用したサイトの場合は、単純な HTTP ライブラリではなくレンダリング ツールを使用する必要があります。
6. スクレイパーを通常のブラウザとしてマスクします。
検出が非常に困難な最もステルスなアプローチの場合は、人間のユーザーとしてマスクする自動ブラウザ プロファイルの使用を検討してください。
Undetected-chromedriver は、ボット検出のトリガーを回避するように Chrome を自動的に構成する人気の Python パッケージです。ヘッダー、Cookie、WebGL フィンガープリント、その他多くの高度なチェックを処理します。
undetected-chromedriver と住宅用プロキシを組み合わせると、スクレイパーリクエストを Cloudflare システムへの通常のユーザートラフィックのように見せる優れた方法です。単純なリクエストよりも多くのリソースが必要ですが、1020 エラーを回避するには非常に効果的です。
ScrapingBee を使用してブロックを回避する
最後に、Cloudflare のボット保護を自分で処理したくない場合は、専用の Web スクレイピング API に処理させることができます。
ScrapingBee は、IP ローテーション、ヘッダー、ブラウザーのレンダリング、および CAPTCHA をバックグラウンドで処理する強力なツールであるため、ユーザーはデータの解析だけに集中できます。プロキシとブラウザ プロファイルの大規模なプールを管理して、リクエストが検出されないようにします。
ScrapingBee API を使用すると、スクレイピングする URL を指定するだけで、HTML 応答が返されます。ページのコンテンツを取得するスマート プロキシとして機能し、途中でボット対策も処理します。
ScrapingBee Python SDK の簡単な使用例を次に示します。
from scrapingbee import ScrapingBeeClient
client = ScrapingBeeClient(api_key=‘YOUR_API_KEY‘)
response = client.get(
‘https://example.com‘,
params = {
‘render_js‘: ‘false‘
}
)
print(‘Response HTTP Status Code: ‘, response.status_code)
print(‘Response HTTP Response Body: ‘, response.content)
ご覧のとおり、わずか数行のコードで、Cloudflare ブロックを気にせずにページの HTML を取得できます。 API は、失敗したリクエストを再試行し、実際のブラウザ ユーザーがアクセスしたかのようにコンテンツを返します。
特殊なスクレイピング API を使用すると、スクレイパーを自分で検出できないようにするのに比べて、多くの時間と頭痛の種を節約できます。 1020 エラーを回避する最も簡単な方法が必要な場合は、試してみてください。
要約
Cloudflare エラー 1020 は、Web スクレイピングの取り組みを確実に中断する可能性がありますが、アプローチをいくつか調整することで、ほとんどの場合、エラーを回避することが可能です。次の重要なヒントを覚えておいてください。
- 人間の動作を模倣するためにリクエスト速度を遅くします。
- IP アドレスとヘッダーをローテーションしてトラフィックを多様化する
- 人間のようなブラウザヘッダー、Cookie、およびユーザーエージェントを使用する
- JS ベースの課題に対する Javascript レンダリングの処理
- ブロックを抽象化するには、ScrapingBee のようなスクレイピング API を検討してください。
適切な技術とツールを使用すれば、Cloudflare の防御を作動させることなく、最もボットに敏感なサイトからでもデータを収集できます。重要なのは、スクレイパーを実際のユーザーとできるだけ同じように動作させることです。
このガイドが Cloudflare エラー 1020 の理解と解決に役立つことを願っています。他にご質問がございましたらお知らせください。