vipnytt / useragentparser
机器人规则集的用户代理解析器
v1.0.5
2021-04-04 16:09 UTC
Requires
- php: ^7.2 || ^8.0
Requires (Dev)
- phpunit/phpunit: ^8.0 || ^9.0
README
机器人规则集的用户代理解析器
优化解析器和分组确定器以适用于robots.txt
、X-Robots-tag
和Robots-meta-tag
的使用场景。
要求
- PHP 5.5+、7.0+或8.0+
安装
该库可通过Composer安装。只需将其添加到您的composer.json
文件中
{ "require": { "vipnytt/useragentparser": "^1.0" } }
然后运行php composer update
。
功能
- 去除版本标签。
- 列出用户代理所属的任何规则组。
- 通过找到与您的规则集最匹配的最具体用户代理的组来确定正确的记录组。
何时使用它?
- 解析
robots.txt
规则集时,用于在线机器人。 - 解析HTTP头中的
X-Robots-Tag
。 - 解析HTML / XHTML文档中的
Robots meta tags
。
注意:完整的用户代理字符串,如Web浏览器发送的,不兼容,这是设计使然。支持的用户代理字符串格式是带有或没有版本标签的UserAgentName/version
。例如:MyWebCrawler/2.0
或仅MyWebCrawler
。
入门
去除版本标签。
use vipnytt\UserAgentParser; $parser = new UserAgentParser('googlebot/2.1'); $product = $parser->getProduct()); // googlebot
列出用户代理所属的不同组
use vipnytt\UserAgentParser; $parser = new UserAgentParser('googlebot-news/2.1'); $userAgents = $parser->getUserAgents()); array( 'googlebot-news/2.1', 'googlebot-news/2', 'googlebot-news', 'googlebotnews', 'googlebot' );
确定正确的组
通过找到与您的规则集最匹配的最具体用户代理的组来确定正确的记录组。
use vipnytt\UserAgentParser; $parser = new UserAgentParser('googlebot-news'); $match = $parser->getMostSpecific(['googlebot/2.1', 'googlebot-images', 'googlebot'])); // googlebot
速查表
$parser = new UserAgentParser('MyCustomCrawler/1.2'); // Determine the correct rule set (robots.txt / robots meta tag / x-robots-tag) $parser->getMostSpecific($array); // string // Parse $parser->getUserAgent(); // string 'MyCustomCrawler/1.2' $parser->getProduct(); // string 'MyCustomCrawler' $parser->getVersion(); // string '1.2' // Crunch the data into groups, from most to less specific $parser->getUserAgents(); // array $parser->getProducts(); // array $parser->getVersions(); // array