ウェブスクレイパーがまたブロックされましたか? うーん、どうしたらいいでしょうか? HTTP ヘッダーを正しく設定してブラウザのように見せかけたのに、サイトはリクエストが自動化されていると認識してしまいました。 どうしてそんなことが起きるのでしょうか? 簡単です。TLS フィンガープリントのせいです! 😲 TLS フィンガープリンティングの巧妙な世界に飛び込み、それがほとんどのブロックの背後にあるサイレントキラーである理由を明らかにし、それを回避する方法を学びます。 アンチボットが再びあなたをブロックしましたか? 理由を調べてみましょう! 典型的なスクレイピングのシナリオを扱っていると仮定しましょう。HTTP クライアント (Python の や JavaScript の など) を使用して自動リクエストを作成し、Web ページの HTML を取得してそこからデータをスクレイピングします。 Requests Axios すでにご存知のとおり、ほとんどのウェブサイトには が導入されています。最高のスクレイピング対策技術について知りたいですか? 最高のスクレイピング対策ソリューションに関するガイドをご覧ください! 🔐 ボット対策技術 これらのツールは受信リクエストを監視し、疑わしいリクエストをフィルタリングします。 リクエストが普通の人間から来ているように見える場合は、問題ありません。そうでない場合は、拒否されることになります! 🧱 ブラウザリクエストとボットリクエスト さて、一般ユーザーからのリクエストはどのようなものになるでしょうか? 簡単です! ブラウザの DevTools を起動し、[ネットワーク] タブに移動して、自分で確認するだけです。 右クリック メニューからオプションを選択してそのリクエストを cURL にコピーすると、次のようになります。 curl 'https://kick.com/emotes/ninja' \ -H 'accept: application/json' \ -H 'accept-language: en-US,en;q=0.9' \ -H 'cache-control: max-age=0' \ -H 'cluster: v1' \ -H 'priority: u=1, i' \ -H 'referer: https://kick.com/ninja' \ -H 'sec-ch-ua: "Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-platform: "Windows"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: same-origin' \ -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36' この構文が中国語のように見えても心配はいりません。cURL をご覧ください。📖 の紹介 基本的に、「人間」からのリクエストは、いくつかの追加ヘッダー ( フラグ) が付いた通常の HTTP リクエストです。アンチボット システムはこれらのヘッダーを検査して、リクエストがボットからのものなのか、ブラウザー内の正当なユーザーからのものなのかを判断します。 -H 最も大きな危険信号の 1 つは、 ヘッダーです。Web に関する投稿をご覧ください。このヘッダーは HTTP クライアントによって自動的に設定されますが、実際のブラウザーで使用されるものと完全に一致することはありません。 User-Agent スクレイピングに最適なユーザー エージェント ヘッダーが一致していませんか?それはボットの明らかな証拠です!💀 詳細については、 に関するガイドをご覧ください。 Web スクレイピングの HTTP ヘッダー HTTP ヘッダーを設定することが必ずしも解決策とは限らない さて、あなたはこう考えているかもしれません。「簡単に解決できる。これらのヘッダーを使用して自動リクエストを実行するだけだ!」 しかし、ちょっと待ってください…🚨 DevTools からコピーした cURL リクエストを実行してください。 驚いたことに、サーバーは Cloudflare から「403 アクセス拒否」ページを返しました。そうです、ブラウザのようなヘッダーがあっても、ブロックされる可能性があります。 結局のところ、 それほど簡単ではありません。😅 Cloudflare をクラックするのは でも、待ってください、どうやって?!それはブラウザが行うのとまったく同じリクエストではないですか?🤔 まあ、そうでもないですが… 鍵はOSIモデルにある OSI モデルのアプリケーション レベルでは、ブラウザーと cURL リクエストは同じです。しかし、見落としている可能性のある基礎レイヤーがすべて存在します。🫠 これらのレイヤーのいくつかは、しばしば厄介なブロックの原因であり、そこに転送される情報こそが、高度なスクレイピング防止技術が焦点を当てているものです。ずる賢い怪物です! 👹 たとえば、ネットワーク層から取得された を確認します。IP 禁止を回避したいですか? に関するチュートリアルに従ってください。 IP アドレス プロキシを使用して IP 禁止を回避する方法 残念ながら、それだけではありません!😩 ボット対策システムは、トランスポート層でスクリプトとターゲット Web サーバーの間で確立された安全な通信チャネルからの フィンガープリントにも細心の注意を払います。 TLS ブラウザと自動化された HTTP リクエストの違いはここにあります。すばらしいと思いませんか? しかし、それが何を意味するのか疑問に思われるかもしれません…🔍 TLS フィンガープリントとは何ですか? は、ブラウザまたは HTTP クライアントが Web サイトへの安全な接続を確立するときに、ボット対策ソリューションによって作成される一意の識別子です。 TLS フィンガープリント これは、 (トランスポート層でデータを暗号化して保護する方法を決定するためのクライアントと Web サーバー間の最初の「会話」) 中にマシンが残すデジタル署名のようなものです。🤝 TLS ハンドシェイク サイトに HTTP リクエストを送信すると、ブラウザまたは HTTP クライアントの基盤となる TLS ライブラリがハンドシェイク手順を開始します。クライアントとサーバーの 2 つの当事者は、「どの暗号化プロトコルをサポートしていますか?」や「どの暗号を使用すればよいですか?」などの質問を互いに尋ね始めます。 サーバーは、あなたの回答に基づいて、あなたがブラウザの通常のユーザーであるか、HTTP クライアントを使用する自動スクリプトであるかを判別できます。つまり、あなたの回答が一般的なブラウザの回答と一致しない場合、ブロックされる可能性があります。 2 人の人が会うときの握手を想像してください。 : 人間バージョン サーバー: 「何語を話せますか?」 ブラウザ:「英語、フランス語、中国語、スペイン語」 サーバー:「よし、チャットしよう」 : ボットバージョン サーバー: 「何語を話せますか?」 ボット: 「ニャー! 🐈」 サーバー: 「申し訳ありませんが、あなたは人間ではないようです。ブロックしました!」 TLS フィンガープリントは OSI モデルのアプリケーション層の下で動作します。つまり、数行のコードで TLS フィンガープリントを微調整することはできません。🚫 💻 🚫 TLS フィンガープリントを偽装するには、HTTP クライアントの TLS 構成を実際のブラウザの構成と入れ替える必要があります。問題は、すべての HTTP クライアントでこれができるわけではないことです。 ここで、 などのツールが役立ちます。この cURL の特別なビルドは、ブラウザの TLS 設定を模倣するように設計されており、コマンド ラインからブラウザをシミュレートするのに役立ちます。 cURL Impersonate ヘッドレスブラウザも解決策にならない理由 さて、あなたはこう考えているかもしれません。「HTTP クライアントが「ボットのような」TLS フィンガープリントを発するのであれば、スクレイピングにはブラウザを使用すればよいのではないでしょうか。」 アイデアは、 ツールを使用して、ヘッドレスブラウザで Web ページ上の特定のタスクを実行することです。 ブラウザ自動化 ブラウザがヘッドレスモードで実行されているかヘッドレスモードで実行されているかに関係なく、同じ基盤となる TLS ライブラリが使用されます。これは、ヘッドレスブラウザが「人間のような」TLS フィンガープリントを生成することを意味するため、朗報です! 🎉 それが解決策ですよね?そうでもないですね…🫤 問題は、ヘッドレス ブラウザには「私はボットです!」と叫ぶような他の設定が付属していることです。🤖 もちろん、 を使用してそれを隠すこともできますが、高度なアンチボットシステムは、JavaScript チャレンジとブラウザフィンガープリントを通じてヘッドレスブラウザを嗅ぎ分けることができます。 Puppeteer Extra のステルスプラグイン つまり、ヘッドレス ブラウザもボット対策として完璧な逃げ道ではないということです。😬 TLS フィンガープリンティングを実際に回避する方法 TLS フィンガープリント チェックは、洗練されたスクレイピング防止ソリューションが実装する多くの高度なボット保護戦術の 1 つにすぎません。🛡️ TLS フィンガープリントやその他の煩わしいブロックの悩みを完全に解消するには、次の機能を提供する次世代のスクレイピング ソリューションが必要です。 信頼性の高い TLS フィンガープリント 無制限の拡張性 CAPTCHAを解読する超能力 7,200万のIPプロキシネットワークを介した組み込みIPローテーション 自動再試行 JavaScript レンダリング機能 これらは、Web を効率的かつ効果的にスクレイピングするためのオールインワンのクラウド ブラウザー ソリューションである Bright Data の が提供する多くの機能の一部です。 Scraping Browser API この製品は、Playwright、Selenium、Puppeteer などのお気に入りのブラウザ自動化ツールとシームレスに統合されます。✨ 自動化ロジックを設定し、スクリプトを実行するだけで、面倒な作業は Scraping Browser API に任せることができます。ブロックのことは忘れて、重要なこと、つまりフルスピードでのスクレイピングに戻りましょう! ⚡️ https://www.youtube.com/watch?v=21Xyi1HMTng&embedable=true ページを操作する必要はありませんか? Bright Data の をお試しください。 Web Unlocker 最後に これで、アプリケーション レベルで作業するだけではすべてのブロックを回避するのに十分ではない理由がようやくわかりました。HTTP クライアントが使用する TLS ライブラリも大きな役割を果たしています。TLS フィンガープリンティング? もう謎ではありません。解明し、対処方法がわかりました。 ブロックにぶつかることなくスクレイピングする方法をお探しですか? のツール スイートをぜひご利用ください。自動化された HTTP リクエストを介しても、インターネットをすべての人がアクセスできるようにするというミッションにご参加ください。🌐 Bright Data 次回まで、自由にウェブサーフィンを続けてください!