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
マッチングに関するものであることに注意してください。この問題を解決する方法は他にもたくさんありますが、それらはこの質問の範囲外です。