11

User-Agent「人間がナビゲートするブラウザー」の場合は true と評価されますが、ボットの場合は false と評価される正規表現を構築しようとしています。言うまでもなく、一致は正確ではありませんが、たとえば 90% のケースでうまくいけば、それで十分です。

これまでの私のアプローチUser-Agentは、5 つの主要なデスクトップ ブラウザー (MSIE、Firefox、Chrome、Safari、Opera) の文字列をターゲットにすることです。具体的には、ユーザー エージェントがボット (Googlebot、msnbot など) の場合、正規表現を一致させないようにします

現在、目的の精度を達成しているように見える次の正規表現を使用しています。

^(Mozilla.*(Gecko|KHTML|MSIE|Presto|Trident)|Opera).*$

私は少数の偽陰性を観察しましたが、そのほとんどはモバイル ブラウザーです。例外はすべて一致します。

(BlackBerry|HTC|LG|MOT|Nokia|NOKIAN|PLAYSTATION|PSP|SAMSUNG|SonyEricsson)

私の質問は次のとおりです。望ましい精度レベルが与えられた場合、正規表現をどのように改善しますか? 与えられた正規表現に対する主要な誤検知または誤検知を思いつきますか?

質問は特に正規表現ベースのUser-Agentマッチングに関するものであることに注意してください。この問題を解決する方法は他にもたくさんありますが、それらはこの質問の範囲外です。

4

3 に答える 3

23

どのユーザー エージェントが robots.txt にアクセスするかを確認することで、ブラックリストを作成できます。

于 2010-03-24T14:05:39.790 に答える
7

多くのクローラーは Accept-Language ヘッダーを送信しませんが、知る限りすべてのブラウザーが送信します。この情報を正規表現と組み合わせて、より正確な結果を得ることができます。

于 2010-03-25T16:37:30.330 に答える
4

私はむしろ反対を使用したいです.ボットのパターンを持つ方がはるかに簡単です.

個人的には、次の正規表現を使用します

/bot\b|index|spider|crawl|wget|slurp|Mediapartners-Google/i
于 2012-05-14T13:49:07.450 に答える