请教下大家,防采集,有什么方法吗

feion1992024-08-06  506

经常被假蜘蛛爬站,被恶意采集,有什么办法能制止吗

转载请注明原文地址:http://www.wellcms.net/read-793.html
00
最新回复(7)
  • 使用nginx的访问控制每分钟客户端最大请求数,然后跳转到404或502!

    还有就是通过判断客户端,内容页增加验证码,目前只能想到这样,最好请冰大指导

    回复00
  • 1.查看日志,把采集的IP直接屏蔽。
    2.使用 PHP 内置函数 dns_get_record 或 nslookup 命令 反查蜘蛛 IP DNS,如果返回蜘蛛数据,比如baidu、360等等相关字符,那就是真蜘蛛。

    回复00
  • 楼上两位大神说了方法,照做即可。
    回复00
  • 这是临时解决用法,能治病。蜘蛛量大的情况下,对效率有影响,必定一直查询是不行的。

    // 在根目录 index.inc.php 文件,第4行加入下面代码
    function isSpider($ip) {
        if (empty($_SERVER['HTTP_USER_AGENT'])) {
            return false;
        }
    
        // 获取反向解析记录
        $records = dns_get_record($ip, DNS_PTR);
        if (empty($records) || !isset($records[0]['ptr'])) {
            return false;
        }
    
        $hostname = $records[0]['ptr'];
        
        // 验证PTR记录的反向解析
        $forward_records = dns_get_record($hostname, DNS_A);
        $valid = false;
        foreach ($forward_records as $forward_record) {
            if ($forward_record['ip'] === $ip) {
                $valid = true;
                break;
            }
        }
    
        if (!$valid) {
            return false;
        }
    
        // 检查是否包含搜索引擎的域名
        $searchEngines = ['baidu.com', 'google.com', 'bing.com', '360.com'];
        foreach ($searchEngines as $searchEngine) {
            if (strpos($hostname, $searchEngine) !== false) {
                return true;
            }
        }
    
        return false;
    }
    
    if (!isSpider($ip)) {
        exit('假蜘蛛精,有本事你换真的来,唐长老我不吃这一套!');
    }
    回复01
  • 燃烧的冰 这是临时解决用法,能治病。蜘蛛量大的情况下,对效率有影响,必定一直查询是不行的。 // 在根目录 index.inc.php 文件,第4行加入下面代码 function isSpider($ip) ...
    6啊,冰哥,代码的最后一句认真的吗?哈哈
    回复10

    • 燃烧的冰
      2024-08-06 12:12:37
      @敲定吧对于假蜘蛛精就得这样,真的另说。

  • 谢谢老大
    回复00
  • well3月前
    引用8
    千古难题,防不了!只要用户能访问就能采
    回复00