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