hexydec/agentzero

用于从User-Agent字符串中提取信息的零知识库

1.2.1 2024-08-01 17:29 UTC

This package is auto-updated.

Last update: 2024-09-28 00:21:44 UTC


README

这是一个用于快速从User-Agent字符串中提取信息的库。

Licence: MIT Tests Status Code Coverage

描述

不匹配完整的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)。有关更多信息,请参阅许可证文件