bopoda / robots-txt-parser
PHP 类,用于根据 Google 和 Yandex 规范解析 robots.txt 文件。
v2.4.1
2021-05-11 17:44 UTC
Requires
- php: >=5.4.0
- ext-mbstring: *
Requires (Dev)
- phpunit/phpunit: >=3.7
This package is auto-updated.
Last update: 2024-08-28 11:59:01 UTC
README
RobotsTxtParser —— 解析 robots.txt 文件所有指令的 PHP 类
RobotsTxtValidator —— 根据robots.txt规则检查 URL 是否允许的 PHP 类
尝试在线上实时域名上 RobotsTxtParser 的演示
解析遵循 Google & Yandex 规范的规则
最新改进
- 根据 clean-param 语法解析 Clean-param 指令。
- 删除注释(从 '#' 字符开始,直到第一个换行符之前的内容将被忽略)
- 解析 Host 的改进——交集指令应指向用户代理 '*'; 如果有多个主机,搜索引擎将采用第一个的值。
- 从类中删除了未使用的方法,进行了重构,并修正了类的属性作用域。
- 添加了更多测试用例,以及添加了整个新功能的测试用例。
- RobotsTxtValidator 类添加到检查 URL 是否允许解析。
- 在 2.0 版本中,RobotsTxtParser 的速度得到了显著提高。
支持的指令
- DIRECTIVE_ALLOW = 'allow';
- DIRECTIVE_DISALLOW = 'disallow';
- DIRECTIVE_HOST = 'host';
- DIRECTIVE_SITEMAP = 'sitemap';
- DIRECTIVE_USERAGENT = 'user-agent';
- DIRECTIVE_CRAWL_DELAY = 'crawl-delay';
- DIRECTIVE_CLEAN_PARAM = 'clean-param';
- DIRECTIVE_NOINDEX = 'noindex';
安装
使用以下命令安装最新版本
composer require bopoda/robots-txt-parser
运行测试
使用命令运行 phpunit 测试
php vendor/bin/phpunit
使用示例
您可以通过从网站获取 robots.txt 文件的内容来启动解析器
$parser = new RobotsTxtParser(file_get_contents('http://example.com/robots.txt')); var_dump($parser->getRules());
或者简单地使用文件的内容作为输入(即:当内容已经缓存时)
$parser = new RobotsTxtParser(" User-Agent: * Disallow: /ajax Disallow: /search Clean-param: param1 /path/file.php User-agent: Yahoo Disallow: / Host: example.com Host: example2.com "); var_dump($parser->getRules());
这将输出
array(2) { ["*"]=> array(3) { ["disallow"]=> array(2) { [0]=> string(5) "/ajax" [1]=> string(7) "/search" } ["clean-param"]=> array(1) { [0]=> string(21) "param1 /path/file.php" } ["host"]=> string(11) "example.com" } ["yahoo"]=> array(1) { ["disallow"]=> array(1) { [0]=> string(1) "/" } } }
为了验证 URL,请使用 RobotsTxtValidator 类
$parser = new RobotsTxtParser(file_get_contents('http://example.com/robots.txt')); $validator = new RobotsTxtValidator($parser->getRules()); $url = '/'; $userAgent = 'MyAwesomeBot'; if ($validator->isUrlAllow($url, $userAgent)) { // Crawl the site URL and do nice stuff }
贡献
请随意在此存储库中创建 PR。请遵循 PSR 风格。
查看参与此项目的 贡献者列表。
最后的话
请使用 v2.0+ 版本,该版本遵循相同的规则但性能更高。