vipnytt/useragentparser

机器人规则集的用户代理解析器

v1.0.5 2021-04-04 16:09 UTC

This package is auto-updated.

Last update: 2024-09-04 23:27:48 UTC


README

Build Status Scrutinizer Code Quality Maintainability Test Coverage License Packagist

机器人规则集的用户代理解析器

优化解析器和分组确定器以适用于robots.txtX-Robots-tagRobots-meta-tag的使用场景。

SensioLabsInsight

要求

  • 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

规格