簡體   English   中英

解析 HTTP 用戶代理字符串

[英]Parsing HTTP User-Agent string

在 Python 中解析 User-Agent 字符串以可靠檢測的最佳方法是什么

  1. 瀏覽器
  2. 瀏覽器版本
  3. 操作系統

或者任何可以做到這一點的幫助庫

我終於決定自己寫,我對結果很滿意。 請隨意使用/修改/發送補丁等。

它在這里: http : //pypi.python.org/pypi/httpagentparser

用法示例:

>>> import httpagentparser
>>> s = "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.9 (KHTML, like Gecko) \
        Chrome/5.0.307.11 Safari/532.9"
>>> print(httpagentparser.simple_detect(s))
('Linux', 'Chrome 5.0.307.11')
>>> print(httpagentparser.detect(s))
{'os': {'name': 'Linux'},
 'browser': {'version': '5.0.307.11', 'name': 'Chrome'}}

>>> s = "Mozilla/5.0 (Linux; U; Android 2.3.5; en-in; HTC_DesireS_S510e Build/GRJ90) \
        AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
>>> print(httpagentparser.simple_detect(s))
('Android Linux 2.3.5', 'Safari 4.0')
>>> print(httpagentparser.detect(s))
{'dist': {'version': '2.3.5', 'name': 'Android'},
'os': {'name': 'Linux'},
'browser': {'version': '4.0', 'name': 'Safari'}}

適用於 Python的 UASparser 由 Hicro Kee 編寫。 通過版本檢查從遠程服務器自動更新數據文件和緩存。

Werkzeug 內置了用戶代理解析。

新鏈接(2018 年 6 月) http://werkzeug.pocoo.org/docs/0.14/utils/#module-werkzeug.useragents

對這個問題的其他回答現在已經很老了。 我相信瀏覽器用戶代理解析的新標准是 Browserscope 的用戶代理解析器

也可以方便地使用許多其他語言完全相同的匹配模式 有一天,您可能還想在 JavaScript 中解析一些 UA 字符串,而不必擔心解析不一致。

在針對Firefox User Agents 的完整語料庫運行這些建議后,我發現用於比較的版本號解析非常差。

如果這就是你所需要的,我建議你看看UAparser ,它曾經是browserscope項目的一部分。 文檔在這里。

瀏覽器上限解析器應該可以工作。 不過可能有點慢。。

但是,如果您希望在 Python 端解析所有這些,您可以使用http://browsers.garykeith.com/downloads.asp提供的 XML/INI 文件在用戶代理上進行查找。 這與 php 的 get_browser() 函數中使用的文件相同。

由於這與開源解決方案無關,我懷疑這將成為第一個答案。 無論如何,當涉及到 User-Agent 分析時,事實上的標准是 WURFL(現在是一個商業產品。

這是對技術文檔的參考。

https://docs.scientiamobile.com/documentation/infuze/infuze-python-module-user-guide

除此之外, WURFL 微服務可在主要的雲提供商市場上使用,並且還支持 Python 客戶端

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM