Regexp, который соответствует агентам пользователя браузеров конечного пользователя, но НЕ поисковых роботов с> 90%-я точность

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

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

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

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

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

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

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

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

11
задан knorv 24 March 2010 в 14:02
поделиться

2 ответа

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

7
ответ дан 3 December 2019 в 02:10
поделиться

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

23
ответ дан 3 December 2019 в 02:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: