harm-smits / webcrawler-verifier
PHP库,提供验证用户代理身份的功能。
2.1.1
2022-01-13 13:53 UTC
Requires
- php: >=7.4.0
- s1lentium/iptools: ~1.1.0
README
Webcralwer-Verifier是一个PHP库,用于确保机器人来自它们声明的操作者,例如,Googlebot实际上是来自Google,而不是来自某个伪装者。
安装
使用Composer安装
如果您使用Composer来管理依赖关系,您可以使用它添加Requests。
composer require harm-smits/webcrawler-verifier
或
{ "require": { "harm-smits/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'; } }
内置爬虫检测
按公司
- 苹果公司
- 百度
- Begun.
- 达索系统
- 迈克尔·斯科贝尔
- 谷歌公司
- Grapeshot Limited
- IBM德国研发有限公司
- 东京大学金泽实验室(外部链接)
- 领英公司
- Mail.Ru集团
- 微软公司
- Mojeek Ltd.
- Odnoklassniki LLC
- OJSC Rostelecom
- Seznam.cz, a.s.
- Turnitin, LLC
- 推特公司
- W3C
- Wotbox团队
- 雅虎公司
- Yandex LLC
按爬虫名称
- 即将推出
欢迎贡献。
工作原理
第一步是识别。
如果用户代理识别为正在检查的机器人之一,它将进入第二步进行验证。如果不是,则不报告。
第二步是验证。
通过查看客户端的网络地址验证用户代理中报告的机器人。大型机器人结合dns +反向dns查找工作。这不是黑客行为,这是官方推荐的方式。ip解析为提供者的主机名,主机名有反向dns条目指向该ip。这给了爬虫操作员更改和添加网络而不冒被网站封锁的风险的自由。
另一种方法是维护ip地址列表。这种方法用于那些没有正式支持第一种方法的操作者。它还可以与第一种方法结合使用,以避免dns验证的一次性成本。
除了需要的地方(对于第二种方法)之外,此项目不维护ip列表。目前可以在互联网上找到的所有列表似乎都过时了。这正是问题所在……它们将始终落后于操作者使用的ip范围。
贡献
不要犹豫,创建一个pull请求。每个贡献都受到赞赏。