HTTP头部中的User-Agent

1 投票
1 回答
561 浏览
提问于 2025-04-16 18:40

我想从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

希望这对你有帮助。

撰写回答