我有像
这样的字符串VK/28 CFNetwork/711.4.6 Darwin/14.0.0
Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13C75 Safari/601.1
Instagram 8.2.0 (iPhone4,1; iPhone OS 8_4; ru_RU; ru; scale=2.00; 640x960) AppleWebKit/420+
Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13C75 Safari/601.1
我想知道每个字符串使用的是什么应用程序。这是
vk
mozilla
instagram
mozilla
我找到了确定浏览器的方法,但是如何获取应用程序我不知道。
答案 0 :(得分:1)
你可以这样:
>>> log = '''VK/28 CFNetwork/711.4.6 Darwin/14.0.0
... Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13C75 Safari/601.1
... Instagram 8.2.0 (iPhone4,1; iPhone OS 8_4; ru_RU; ru; scale=2.00; 640x960) AppleWebKit/420+
... Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13C75 Safari/601.1
... '''
>>> agents = [line.split()[0].split('/')[0] for line in log.splitlines()]
>>> print '\n'.join(agents)
VK
Mozilla
Instagram
Mozilla
答案 1 :(得分:1)
如果您只是尝试解析标头,或尝试将用户代理字符串与访问您服务器的已知应用/服务进行匹配,则不太清楚。由于前一个问题由Adem回答,所以这是对后者的解释。
无法通过User-agent标头找到访问您服务器的应用的确切名称。虽然HTTP/1.1 Standard确实指定了用户代理字符串格式,但它主要由人工操作的浏览器使用,而机器人和其他软件可能使用简化格式甚至欺骗它(请参阅wiki)。 / p>
因此,在您的情况下,最好提供一个您想要跟踪的应用列表,然后在网络上找到他们的用户代理标题(例如this或this ),以便您可以解析HTTP标头并将用户代理字符串与列表中的项匹配。