站三界导航
首页 PHP代码一个简单的 PHP 防采集的公共方法代码示例

一个简单的 PHP 防采集的公共方法代码示例

  • PHP代码
  • 来源:站三界导航
  • 109阅读
  • 2023-08-03

<?php
// 设置防采集的规则
$userAgentList = array(
    "Googlebot",
    "Baiduspider",
    "360Spider",
    "Sogou web spider",
    "bingbot",
    "Yahoo! Slurp"
);

// 检查用户代理是否符合防采集规则
function checkUserAgent() {
    global $userAgentList;
    $userAgent = $_SERVER['HTTP_USER_AGENT'];
    foreach($userAgentList as $agent) {
        if (stripos($userAgent, $agent) !== false) {
            return true; // 用户代理匹配防采集规则,可能是爬虫
        }
    }
    return false; // 用户代理未匹配防采集规则
}

// 检查来源是否为搜索引擎
function checkReferrer() {
    $referrer = $_SERVER['HTTP_REFERER'];
    if (!empty($referrer)) {
        $hostname = parse_url($referrer, PHP_URL_HOST);
        $refererArr = array(
            'google.com',
            'baidu.com',
            'sogou.com',
            'bing.com',
            'yahoo.com'
        );
        foreach ($refererArr as $referrer) {
            if (stripos($hostname, $referrer) !== false) {
                return true; // 来源匹配防采集规则,可能是搜索引擎
            }
        }
    }
    return false; // 来源未匹配防采集规则
}

// 检查访问频率
function checkAccessFrequency() {
    $accessTimes = 3; // 允许的访问次数
    $accessExpire = 10; // 访问限制时间(秒)
    $ip = $_SERVER['REMOTE_ADDR'];
    $key = 'access_frequency_' . $ip;
    $accessCount = intval(apc_fetch($key));
    if ($accessCount >= $accessTimes) {
        return false; // 超过访问次数限制
    } else {
        apc_inc($key, 1, $accessExpire);
        return true; // 未超过访问次数限制
    }
}

// 执行防采集逻辑判断
function preventCollect() {
    if (checkUserAgent() || checkReferrer() || !checkAccessFrequency()) {
        header('HTTP/1.1 403 Forbidden');
        echo "Access Forbidden";
        exit();
    }
}

// 调用防采集方法
preventCollect();
?>

此代码示例包括三个函数:

checkUserAgent:检查用户代理是否匹配防采集规则,判断是否为爬虫。
checkReferrer:检查来源是否匹配防采集规则,判断是否为搜索引擎。

checkAccessFrequency:检查访问频率是否超过限制。


最后,通过调用 preventCollect 函数来执行防采集的逻辑判断,如果满足防采集条件,则返回 HTTP 403 禁止访问状态码。你可以根据具体需求修改和完善这些方法。
本文结束
本文来自投稿,不代表站三界导航立场,如若转载,请注明出处:https://www.zhansanjie.com/article/details/47725.html

版权声明:

1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

2、本站仅提供信息发布平台,不承担相关法律责任。

3、若侵犯您的版权或隐私,请联系本站管理员删除。

4、本文由会员转载自互联网,如果您是文章原创作者,请联系本站注明您的版权信息。

分享
站三界导航
本站声明:本站严格遵守国家相关法律规定,非正规网站一概不予收录。本站所有资料取之于互联网,任何公司或个人参考使用本资料请自辨真伪、后果自负,站三界导航不承担任何责任。在此特别感谢您对站三界导航的支持与厚爱。