跳转到主要内容

一个函数,它接受一个用户代理字符串(可选的Sec-CH-UA和Sec-CH-UA-Platform头信息),并返回其对浏览器名称、版本和平台的最佳猜测。

项目描述

一个Python函数,它接受一个用户代理字符串(可选的Sec-CH-UASec-CH-UA-Platform头信息)并返回其对浏览器名称、版本和平台的最佳猜测。

动机

我想让用户知道他们登录的所有设备,并且希望显示的信息尽可能准确。

在寻找解决方案的过程中,我了解到仅使用用户代理字符串是不够的,仅使用客户端提示也不够。

更多信息请见https://github.com/ua-parser/uap-core/issues/452

为什么仅使用用户代理字符串是不够的?

有时浏览器会在其Sec-CH-UA头中标识自己,但不在用户代理字符串中。Brave就是这样一个例子(iOS版本除外,它不发送Sec-CH-UASec-CH-UA-Platform头)。

为什么仅使用客户端提示是不够的?

有时,浏览器在其用户代理字符串中标识自己,但不在其Sec-CH-UA头中标识。Ecosia的Android版本就是这种情况的例子(其Sec-CH-UA头表示它是Chromium)。此外,一些浏览器不发送Sec-CH-UASec-CH-UA-Platform头。

安装

pip install identify_browser

使用

from identify_browser import identify_browser

# These values could come from anywhere. For example, in Django, they could come from:
#
# request.headers.get("User-Agent", "")
# request.headers.get("Sec-Ch-Ua", "")
# request.headers.get("Sec-Ch-Ua-Platform", "")
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
sec_ch_ua = '"Not/A)Brand";v="8", "Chromium";v="126", "Brave";v="126"'
sec_ch_ua_platform = '"Windows"'

browser_identity = identify_browser(user_agent, sec_ch_ua, sec_ch_ua_platform)
print(f"You appear to be using {browser_identity['name']} {browser_identity['version']} on {browser_identity['platform']}")
# Output: You appear to be using Brave 126 on Windows

项目详情


下载文件

下载适用于您平台的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。

源分布

identify_browser-1.0.0.tar.gz (7.5 kB 查看散列值)

上传时间

构建分布

identify_browser-1.0.0-py3-none-any.whl (4.5 kB 查看散列值)

上传时间 Python 3

由以下支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面