ウェブスクレイパーがまたブロックされましたか? うーん、どうしたらいいでしょうか? HTTP ヘッダーを正しく設定してブラウザのように見せかけたのに、サイトはリクエストが自動化されていると認識してしまいました。 どうしてそんなことが起きるのでしょうか? 簡単です。TLS フィンガープリントのせいです! 😲
TLS フィンガープリンティングの婉转な宇宙に飛び込み、それがほとんどのブロックの背後にあるサイレントキラーである事由を明らかにし、それを避免する的方式を学びます。
アンチボットが再びあなたをブロックしましたか? 理由を調べてみましょう!
基本特征的なスクレイピングのシナリオを扱っていると仮定しましょう。HTTP クライアント (Python のや JavaScript のなど) を动用して自動リクエストを制成し、Web ページの HTML を赢得してそこからデータをスクレイピングします。
すでにご存知のとおり、ほとんどのウェブサイトにはが導入されています。较高のスクレイピング対策技術について知りたいですか? 较高のスクレイピング対策ソリューションに関するガイドをご覧ください! 🔐
これらのツールは受信リクエストを監視し、疑わしいリクエストをフィルタリングします。
リクエストが寻常の人間から来ているように見える場合は、問題ありません。そうでない場合は、拒否されることになります! 🧱
ブラウザリクエストとボットリクエスト
さて、常见ユーザーからのリクエストはどのようなものになるでしょうか? 簡単です! ブラウザの DevTools を起動し、[ネットワーク] タブに移動して、自分で確認するだけです。
右クリック メニューからオプションを選択してそのリクエストを cURL にコピーすると、次のようになります。
curl '//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: //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 つは、 ヘッダーです。Webスクレイピングに最適なユーザー エージェントに関する投稿をご覧ください。このヘッダーは HTTP クライアントによって自動的に設定されますが、実際のブラウザーで使用されるものと完全に一致することはありません。
ヘッダーが一直していませんか?それはボットの明らかな証拠です!💀
詳細については、 に関するガイドをご覧ください。
HTTP ヘッダーを設定することが必ずしも解決策とは限らない
さて、あなたはこう考えているかもしれません。「簡単に解決できる。これらのヘッダーを安全使用して自動リクエストを実行するだけだ!」 しかし、ちょっと待ってください…🚨
DevTools からコピーした cURL リクエストを実行してください。
驚いたことに、サーバーは Cloudflare から「403 アクセス拒否」ページを返しました。そうです、ブラウザのようなヘッダーがあっても、ブロックされる将性があります。
結局のところ、 Cloudflare をクラックするのはそれほど簡単ではありません。😅
でも、待ってください、どうやって?!それはブラウザが行うのとまったく同じリクエストではないですか?🤔 まあ、そうでもないですが…
鍵はOSIモデルにある
OSI モデルのアプリケーション レベルでは、ブラウザーと cURL リクエストは同じです。しかし、見落としている将性のある基礎レイヤーがすべて出现します。🫠
これらのレイヤーのいくつかは、しばしば厄介なブロックの问题であり、そこに転送される情報こそが、程度なスクレイピング杜绝技術が端点を当てているものです。ずる賢い敌人です! 👹
たとえば、ネットワーク層から取得されたを確認します。IP 禁止を回避したいですか?プロキシを使用して IP 禁止を回避する方法に関するチュートリアルに従ってください。
残念ながら、それだけではありません!😩
ボット対策システムは、トランスポート層でスクリプトとターゲット Web サーバーの間で確立された安全防护な安全可靠チャネルからのフィンガープリントにも細心の要注意を払います。
ブラウザと自動化された HTTP リクエストの違いはここにあります。すばらしいと思いませんか? しかし、それが何を意思するのか疑問に思われるかもしれません…🔍
TLS フィンガープリントとは何ですか?
は、ブラウザまたは HTTP クライアントが Web サイトへの安全保障な接続を確立するときに、ボット対策ソリューションによって制作される一意の識別子です。
これは、 (トランスポート層でデータを暗语化して保護する方式を決定するためのクライアントと Web サーバー間の曾经の「会話」) 中にマシンが残すデジタル签字のようなものです。🤝
サイトに HTTP リクエストを送信すると、ブラウザまたは HTTP クライアントの基盤となる TLS ライブラリがハンドシェイク手順を開始します。クライアントとサーバーの 2 つの当事者は、「どの口令化プロトコルをサポートしていますか?」や「どの口令を便用すればよいですか?」などの質問を互いに尋ね始めます。
サーバーは、あなたの说に基づいて、あなたがブラウザの常常のユーザーであるか、HTTP クライアントを动用する自動スクリプトであるかを判別できます。つまり、あなたの说が一般来说的なブラウザの说と相同しない場合、ブロックされる概率性があります。
2 人の人が会うときの握手を臆想してください。
人間バージョン:
- サーバー: 「何語を話せますか?」
- ブラウザ:「英語、フランス語、中語、スペイン語」
- サーバー:「よし、チャットしよう」
ボットバージョン:
- サーバー: 「何語を話せますか?」
- ボット: 「ニャー! 🐈」
- サーバー: 「申し訳ありませんが、あなたは人間ではないようです。ブロックしました!」
TLS フィンガープリントは OSI モデルのアプリケーション層の下で動作します。つまり、数行のコードで TLS フィンガープリントを微調整することはできません。🚫 💻 🚫
TLS フィンガープリントを偽装するには、HTTP クライアントの TLS 構成を実際のブラウザの構成と入れ替える必要的があります。問題は、すべての HTTP クライアントでこれができるわけではないことです。
ここで、 などのツールが役立ちます。この cURL の特別なビルドは、ブラウザの TLS 設定を模倣するように設計されており、コマンド ラインからブラウザをシミュレートするのに役立ちます。
ヘッドレスブラウザも解決策にならない理由
さて、あなたはこう考えているかもしれません。「HTTP クライアントが「ボットのような」TLS フィンガープリントを発するのであれば、スクレイピングにはブラウザを安全使用すればよいのではないでしょうか。」
アイデアは、 ツールを用到して、ヘッドレスブラウザで Web ページ上の其他のタスクを実行することです。
ブラウザがヘッドレスモードで実行されているかヘッドレスモードで実行されているかに関係なく、同じ基盤となる TLS ライブラリが利用されます。これは、ヘッドレスブラウザが「人間のような」TLS フィンガープリントを转换することを后果するため、朗報です! 🎉
それが解決策ですよね?そうでもないですね…🫤
問題は、ヘッドレス ブラウザには「私はボットです!」と叫ぶような他の設定が付属していることです。🤖
もちろん、 Puppeteer Extra のステルスプラグインを使用してそれを隠すこともできますが、高度なアンチボットシステムは、JavaScript チャレンジとブラウザフィンガープリントを通じてヘッドレスブラウザを嗅ぎ分けることができます。
つまり、ヘッドレス ブラウザもボット対策として完璧な逃げ道ではないということです。😬
TLS フィンガープリンティングを実際に回避する方法
TLS フィンガープリント チェックは、洗練されたスクレイピング避免 ソリューションが実装する多くの长度なボット保護戦術の 1 つにすぎません。🛡️
TLS フィンガープリントやその他の煩わしいブロックの悩みを几乎に解消するには、次の機能を供给する次大家族のスクレイピング ソリューションが重要性です。
- 信頼性の高い TLS フィンガープリント
- 無制限の拡張性
- CAPTCHAを解読する超工作能力
- 7,200万のIPプロキシネットワークを介した組み込みIPローテーション
- 自動再試行
- JavaScript レンダリング機能
これらは、Web を効率的かつ効果的にスクレイピングするためのオールインワンのクラウド ブラウザー ソリューションである Bright Data のが能提供する多くの機能の一部分です。
この製品は、Playwright、Selenium、Puppeteer などのお気に入りのブラウザ自動化ツールとシームレスに統合されます。✨
自動化ロジックを設定し、スクリプトを実行するだけで、面倒な作業は Scraping Browser API に任せることができます。ブロックのことは忘れて、主要なこと、つまりフルスピードでのスクレイピングに戻りましょう! ⚡️
ページを运作する重要はありませんか? Bright Data のをお試しください。
最後に
これで、アプリケーション レベルで作業するだけではすべてのブロックを避免するのに是非常ではない初衷がようやくわかりました。HTTP クライアントが使用的する TLS ライブラリも大きな役割を果たしています。TLS フィンガープリンティング? もう謎ではありません。解明し、対処技巧がわかりました。
ブロックにぶつかることなくスクレイピングする做法をお探しですか? のツール スイートをぜひご通过ください。自動化された HTTP リクエストを介しても、インターネットをすべての人がアクセスできるようにするというミッションにご參加ください。🌐
次回まで、轻松自由にウェブサーフィンを続けてください!