我正在尝试构建一个正则表达式,对于User-Agent
“由人类导航的浏览器”的 :s 评估为 true,但对于机器人则为 false。不用说匹配不会是精确的,但如果它在 90% 的情况下都正确,那就足够了。
到目前为止,我的方法是针对User-Agent
五种主要桌面浏览器(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
匹配。还有很多其他方法可以解决这个问题,但这些都超出了这个问题的范围。