Регулярное выражение, соответствующее пользовательским агентам браузеров конечных пользователей, но НЕ искатели с точностью> 90% - PullRequest
11 голосов
/ 24 марта 2010

Я пытаюсь создать регулярное выражение, которое будет иметь значение true для User-Agent: s "браузеров, управляемых людьми", но false для ботов.Само собой разумеется, что сопоставление не будет точным, но, если оно дает правильные результаты, скажем, в 90% случаев, это более чем достаточно.

Мой подход до сих пор заключается в нацеливании на строку User-Agentпять основных настольных браузеров (MSIE, Firefox, Chrome, Safari, Opera).В частности, я хочу, чтобы регулярное выражение NOT соответствовало, если агент пользователя является ботом (Googlebot, msnbot и т. Д.).

В настоящее время я использую следующее регулярное выражение, которое, по-видимому, позволяетжелаемая точность:

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

Я наблюдал небольшое количество ложных негативов, которые в основном являются мобильными браузерами.Все исключения соответствуют:

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

Мой вопрос: Учитывая желаемый уровень точности, как бы вы улучшили регулярное выражение?Можете ли вы вспомнить какие-либо существенные ложные срабатывания или ложные отрицания для данного регулярного выражения?

Обратите внимание, что этот вопрос конкретно касается сопоставления User-Agent на основе регулярных выражений.Существует множество других подходов к решению этой проблемы, но они выходят за рамки этого вопроса.

Ответы [ 3 ]

23 голосов
/ 24 марта 2010

Вы можете создать черный список, проверив, какие пользовательские агенты обращаются к robots.txt.

7 голосов
/ 25 марта 2010

Многие сканеры не отправляют заголовок Accept-Language, в то время как AFAIK все браузеры отправляют. Вы можете объединить эту информацию с вашим регулярным выражением, чтобы получить более точные результаты.

4 голосов
/ 14 мая 2012

Я бы предпочел использовать противоположное, шаблон для ботов намного проще

лично я использую следующее регулярное выражение

/bot\b|index|spider|crawl|wget|slurp|Mediapartners-Google/i
...