HTTP头部中的User-Agent
我想从HTTP头中的用户代理字符串获取浏览器列表。在很多字符串中,浏览器信息是字符串中的第二个部分,比如下面这个:
(compatible;.MSIE.8.0;.Windows.NT.5.1;.Trident/4.0)
但是在有些字符串中,要么没有浏览器信息,要么浏览器信息是第三个部分,就像下面这些:
(Macintosh;.Intel.Mac.OS.X.10_6_1;.U;.so)
(Macintosh;.Intel.Mac.OS.X.10_6_1;.so)
我该怎么处理这个问题呢?在Python中有没有什么方法可以处理HTTP头字段?非常感谢。
1 个回答
3
我之前用PHP写了一个用户代理分析器,可能有点过时,但希望能对你有帮助。我提取了浏览器信息、操作系统和语言,不过这里只讲浏览器信息。
在用户代理字符串中,所有主要浏览器的名字都有,但几乎每个字符串里都会出现Mozilla。如果是Firefox,就用字符串Firefox。所以你可以创建一个包含这些内容的数组:
browserList = {'Opera': 'Opera',
'Internet Explorer': 'MSIE',
'Firefox': 'Firefox',
'Chrome': 'Chrome',
'Not specified' => ''}
然后尝试在用户代理字符串中匹配这些内容。如果你想扩展统计数据,可以添加更多的浏览器。至于版本号,通常它会在浏览器名字后面紧跟着出现。所以可以尝试提取在找到浏览器名字后第一个数字-点-数字的组合。
你的访问者可能是爬虫(像谷歌的那种机器人),你可以通过与这个列表进行匹配来找到它们:
nuhk, Googlebot, Yammybot, Openbot, Slurp, MSNBot, Ask Jeeves/Teoma, ia_archiver
希望这对你有帮助。