itgalaxy / webcrawler-verifier
PHP 库,提供验证用户代理声称身份的功能。
2.1.0
2016-10-31 11:48 UTC
Requires
- php: ^5.6 || ^7.0
- s1lentium/iptools: ~1.1.0
Requires (Dev)
- phpunit/php-code-coverage: ~4.0.0
- phpunit/phpunit: ~5.6.0
- satooshi/php-coveralls: ~1.0.0
README
Webcralwer-Verifier 是一个 PHP 库,用于确保机器人来自它们声称的操作者,例如确保 Googlebot 实际上来自 Google 而不是来自某个欺骗者。
安装
使用 Composer 安装
如果您使用 Composer 来管理依赖项,您可以使用它添加 Requests。
composer require itgalaxy/webcrawler-verifier
或
{ "require": { "itgalaxy/webcrawler-verifier": ">=1.0.0" } }
使用方法
<?php require_once 'vendor/autoload.php'; $userAgent = 'Some user agent'; $ip = '192.168.0.1'; $webcrawlerVerifier = new \WebcrawlerVerifier\WebcrawlerVerifier(); $verifiedStatus = $webcrawlerVerifier->verify( $userAgent, $ip ); if ($verifiedStatus === $webcrawlerVerifier::VERIFIED) { echo 'Good webcrawler'; } elseif ($verifiedStatus === $webcrawlerVerifier::UNVERIFIED) { echo 'Bad webcrawler'; } else { // Alias `$verifiedStatus === $webcrawlerVerifier::UNKNOWN` echo 'Unknown good or bad wecrawler'; }
或
<?php // This file is generated by Composer require_once 'vendor/autoload.php'; if (!empty($_SERVER['HTTP_USER_AGENT']) && !empty($_SERVER['REMOTE_ADDR'])) { $webcrawlerVerifier = new \WebcrawlerVerifier\WebcrawlerVerifier(); $verifiedStatus = $webcrawlerVerifier->verify( $_SERVER['HTTP_USER_AGENT'], $_SERVER['REMOTE_ADDR'] ); if ($verifiedStatus === $webcrawlerVerifier::VERIFIED) { echo 'Good webcrawler'; } elseif ($verifiedStatus === $webcrawlerVerifier::UNVERIFIED) { echo 'Bad webcrawler'; } else { // Alias `$verifiedStatus === $webcrawlerVerifier::UNKNOWN` echo 'Unknown good or bad wecrawler'; } }
内置爬虫检测
按公司
- 苹果公司
- 百度
- 开始.
- 达索系统
- 迈克尔·舍贝尔
- 谷歌公司
- 葡萄射击有限公司
- IBM 德国研发公司
- 东京大学金泽实验室
- 领英公司
- Mail.Ru 集团
- 微软公司
- Mojeek Ltd.
- ODNOKLASSNIKI LLC
- 俄罗斯电信公司
- Seznam.cz,a.s.
- Turnitin,LLC
- Twitter,Inc.
- W3C
- Wotbox 团队
- 雅虎!公司
- Yandex LLC
按网络爬虫名称
- 即将推出
欢迎贡献力量。
工作原理
第一步是识别。
如果用户代理标识为正在检查的机器人之一,则进入第二步进行验证。如果不是,则不报告。
第二步是验证。
通过查看客户端的网络地址验证报告在用户代理中的机器人。大型机器人使用 dns + 反向查找的组合工作。这并非黑客行为,这是官方推荐的方式。IP 解析为提供商的主机名,而主机名有反向 DNS 条目指向该 IP。这为爬虫运营商提供了更改和添加网络的自由,而不会冒着被网站封锁的风险。
另一种方法是维护 IP 地址列表。这用于那些未官方支持第一种方法的运营商。并且可以与第一种方法结合使用,以避免 DNS 验证的一次性成本。
除非需要(对于第二种方法),本项目不维护 IP 列表。目前在互联网上可以找到的所有列表似乎都过时了。这正是问题所在...它们将始终落后于运营商使用的 IP 范围。
贡献
不要犹豫,创建 pull request。每个贡献都受到欢迎。