itgalaxy/webcrawler-verifier

PHP 库,提供验证用户代理声称身份的功能。

2.1.0 2016-10-31 11:48 UTC

This package is auto-updated.

Last update: 2024-09-13 10:39:33 UTC


README

Latest Stable Version Travis Build Status Coverage Status Dependency Status

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';
    }
}

内置爬虫检测

按公司

按网络爬虫名称

  • 即将推出

欢迎贡献力量。

工作原理

第一步是识别。

如果用户代理标识为正在检查的机器人之一,则进入第二步进行验证。如果不是,则不报告。

第二步是验证。

通过查看客户端的网络地址验证报告在用户代理中的机器人。大型机器人使用 dns + 反向查找的组合工作。这并非黑客行为,这是官方推荐的方式。IP 解析为提供商的主机名,而主机名有反向 DNS 条目指向该 IP。这为爬虫运营商提供了更改和添加网络的自由,而不会冒着被网站封锁的风险。

另一种方法是维护 IP 地址列表。这用于那些未官方支持第一种方法的运营商。并且可以与第一种方法结合使用,以避免 DNS 验证的一次性成本。

除非需要(对于第二种方法),本项目不维护 IP 列表。目前在互联网上可以找到的所有列表似乎都过时了。这正是问题所在...它们将始终落后于运营商使用的 IP 范围。

贡献

不要犹豫,创建 pull request。每个贡献都受到欢迎。

变更日志

许可证