web-dev-qa-db-ja.com

ブラウザのフィンガープリントによるボットの検出

最近、いくつかの企業が、ブラウザーのフィンガープリントを検出してそれらを検出し、特定のフィンガープリントが(IPをブロックするのではなく)サイトにアクセスしないようにするというアイデアに基づいて、ボットおよびスクレイピング保護サービスを提供し始めていることに気付きました。

以下にいくつかの例を示します。

それらの間には違いがありますが、これらの企業はすべて、JavaScriptを使用してプラグイン、フォント、画面サイズ、解像度などの詳細なブラウザー固有のフィールドを取得し、それらをHTTPヘッダーから取得できるものと組み合わせ、このデータを使用してクライアントを分類しますボット/人間として。

私の質問は次のとおりです:このアプローチは十分に堅牢ですか?攻撃者がJavascriptクライアントが盗聴するすべてのデータフィールド(プラグイン、フォント、OSなど)を偽装することはどれほど困難ですか?このアプローチはどのような対策を提供しますか-あまり洗練されていないボットに対してのみですか、それとも本当に克服するのが難しいですか?

13
WeaselFox

私はプロキシとして機能し、いくつかの本当に難読化されたJavaScriptですべてのWebページをエンコードする同様のサービスを見てきました。そのため、実際のブラウザはそのサイトを問題なく閲覧できますが、不可能ではないにしても、本当に難しいでしょう(JSがランダムであり、リクエストごとに異なります)、従来のスクレーパーが同じことを行います。

問題は、実際のブラウザーを実行するだけでスクレイパーを作成する時間を無駄にすることなく、これらすべてのアプローチを打ち破るのが本当に簡単であることです。

Selenium WebDriver を見てください。これにより、実際のブラウザに接続してプログラムで制御できます。これらのソリューションは、Firefox(またはChrome、またはサポートされているブラウザ)外へのインストール。

ボットをブロックしようとする時間を無駄にするのではなく、ボットをブロックする理由を自問してください。Webサーバーが過負荷になっている場合は、IPベースのレート制限を実装し、スパムを送信している場合は、キャプチャを実装します。それ以外の場合は、 、彼らはあなたに何の害も及ぼしていません。

7
user42178

この手順は、多数のボットを識別してブロックするのに役立つ可能性がありますが、データを盗もうとする人々は、検出を避けるためにできるだけカスタマイズしてランダム化します。そうではありません。このアプローチは、より洗練されたスクレーパーに対しては最も効果的ではありません。

スクレイパーが1日に数回完全にHTTPリクエストを変更するのを見てきました。これらの企業は活動を行うためにお金を投資しており、これらの静的検出を回避する方法を模索します。

このトラフィックをブロックできる唯一の方法は、ブロックルールを手動で追加するか、リクエスト間の時間差、パラメーターオーダー、共有セッションIDなど、他の動作を詳しく説明する大きなアルゴリズムを開発することです。

リンクからマーケティングコピーを読み取ると、あなたが話している「ボット」のタイプは、典型的な「ブラウザ」ではなく、単純なスクリプトである場合もあれば、由緒あるwgetである場合もあります。

その場合、スクリプトがナビゲートしているかどうか、または本格的なブラウザがナビゲートしているかどうかを判断するのは簡単です。しかし、あなたが疑っているように、誰かがこれらのボットブロッカーを倒すことに興味がある場合は、有効なブラウザのように見せるために偽のデータをサーバーに提供することも簡単です。

たとえば、事前に構成されたUAをサーバーに提供するPythonベースのWebスクレイパーを作成しました(私の場合、スクリプトとしてそれ自体をアナウンスします)。他のデータ(インストールされているフォント)については、私自身は行っていませんが、データで応答するようにブラウザーを構成できれば、「ボット」も同様にできると確信しています。

3
schroeder

誰もがすでに回答しているように、ブラウザのフィンガープリントだけでボットを検出することはできません。

ShieldSquareは、ボットのほとんどの時間を費やしているボット検出会社であるため、ボットの検出が可能であると私は思います。JSデバイスのフィンガープリントとともに、さらにいくつか考慮すべき点があります。

  • ユーザーの行動[ユーザーが幅優先パターンか深さ優先パターンかを問わず、ユーザーがWebサイトで何をしているかを分析できます。ユーザーがWebサイトに費やした時間(分)、ユーザーがアクセスしたページ数]

  • IPレピュテーション[IP履歴を見ると、IPからの訪問数がないか、パターンがあり、ネットワークフォレンジックを受信したリクエストに対して実行し、リクエストがTor /プロキシIPからのものかどうかを識別できます。]

  • ブラウザの検証

実際、これらの計算はすべて7ミリ秒で実行できます。

2
Raviraj Hegde