hexydec / agentzero
用于从User-Agent字符串中提取信息的零知识库
1.2.1
2024-08-01 17:29 UTC
Requires
- php: >=8.1
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpunit/phpunit: 10.1.2
README
这是一个用于快速从User-Agent字符串中提取信息的库。
描述
不匹配完整的UA字符串或模式,而是从UA字符串中提取和分类特征,因此速度更快,可以处理新的UA字符串或常见UA模式的变体。
大多数User-Agent检测库依赖于正则表达式列表来匹配用户代理字符串模式并提取信息。使用许多模式你可以做一份不错的工作来获取这些信息,但是它不够动态,这会导致一些变体或新的UA字符串没有被捕获,并且它们通常相当慢。
AgentZero是一个简单的字符串匹配库,它将用户代理字符串拆分为令牌以从每一部分中提取信息,从而导致更完整的信息,在捕获新的用户代理字符串方面具有更多灵活性,并且性能更好。
您可以在https://hexydec.com/apps/user-agent-parser/上在线尝试AgentZero,或者安装后运行提供的index.php
文件。
使用方法
要使用AgentZero
$ua = $_SERVER['HTTP_USER_AGENT']; // or whatever UA you want e.g: $ua = 'Mozilla/5.0 (Linux; Android 13; Pixel 7 Pro Build/TD1A.220804.031; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36 Instagram 301.1.0.33.110 Android (33/13; 420dpi; 1080x2116; Google/google; Pixel 7 Pro; cheetah; cheetah; en_GB; 517986703)'; $browser = \hexydec\agentzero\agentzero::parse($ua);
返回值将类似于
\hexydec\agentzero\agentzero ( public readonly string 'string' => string 'Mozilla/5.0 (Linux; Android 13; Pixel 7 Pro Build/TD1A.220804.031; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36 Instagram 301.1.0.33.110 Android (33/13; 420dpi; 1080x2116; Google/google; Pixel 7 Pro; cheetah; cheetah; en_GB; 517986703)'; // categories public readonly ?string 'type' => string 'human'; public readonly ?string 'category' => string 'mobile'; // device public readonly ?string 'vendor' => string 'Google'; public readonly ?string 'device' => string 'Pixel'; public readonly ?string 'model' => string '7 Pro'; public readonly ?string 'build' => string 'TD1A.220804.031'; public readonly ?int 'ram' => null; // architecture public readonly ?string 'processor' => null; public readonly ?string 'architecture' => null; public readonly ?int 'bits' => null; public readonly ?string 'cpu' => null; public readonly ?int 'cpuclock' => null; // platform public readonly ?string 'kernel' => string 'Linux'; public readonly ?string 'platform' => string 'Android'; public readonly ?string 'platformversion' => string '13'; // browser public readonly ?string 'engine' => string 'Blink'; public readonly ?string 'engineversion' => string '116.0.0.0'; public readonly ?string 'browser' => string 'Chrome'; public readonly ?string 'browserversion' => string '116.0.0.0'; public readonly ?string 'language' => string 'en-GB'; // app public readonly ?string 'app' => string 'Instagram'; public readonly ?string 'appname' => string 'Instagram'; public readonly ?string 'appversion' => string '301.1.0.33.110'; public readonly ?string 'framework' => null; public readonly ?string 'frameworkversion' => null; public readonly ?string 'url' => null; // network public readonly ?string 'nettype' => null; public readonly ?string 'proxy' => null; // screen public readonly ?int 'width' => int 1080 public readonly ?int 'height' => int 2116 public readonly ?int 'dpi' => int 420 public readonly ?float 'density' => null; public readonly ?bool 'darkmode' => null;; );
您可以在此处阅读属性的全列表。
支持的功能
AgentZero支持广泛的架构、浏览器、渲染引擎、平台、设备和爬虫。请访问支持功能页面以获取完整列表。
安装
启动的最简单方法是使用composer
$ composer require hexydec/agentzero
测试套件
您可以通过以下方式运行测试套件
Linux
$ vendor/bin/phpunit
Windows
> vendor\bin\phpunit
支持
AgentZero支持PHP版本8.1以上。
贡献
如果您在AgentZero中发现问题,请在跟踪器中创建一个问题。
如果您希望自行修复问题,请克隆代码,修复问题,然后创建一个pull请求,我将评估您的提交。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。