zoukankan      html  css  js  c++  java
  • Discuz封锁蜘蛛最有效的方法

    闲来无事翻代码,发现一个好东西,Discuz设计者考虑到了有些流氓搜索引擎不遵守roborts.txt,于是设计了一个NOROBOT变量,当这个变量为true 的时候,定义中的搜索引擎都会无法访问,默认比如在post.php里面开头就定义了

    define('NOROBOT', TRUE);

    这样就可以有效防止蜘蛛乱爬了

    但是至于像viewthread.php,forumdisplay.php(还有其他。比如,feed页面等)默认就是要给虫子爬的,所以,这一句话没有,如果要封锁蜘蛛,在这些页面中加入这个定义即可

    加入后,在在线会员列表中,出现了好多游客的“无效的越权访问”,这些“游客,就是蜘蛛了”

    查看common.inc.php,可以看到如下函数

    getrobot();
    if(defined('NOROBOT') && IS_ROBOT) {
    exit(header("HTTP/1.1 403 Forbidden"));
    }

    这个可见,如果discuz调用getrobot()这个函数发现来访者是蜘蛛,就返回http 403禁止访问的错误提示

    这个函数是在global.func.php被定义的

    function getrobot() {
     if(!defined('IS_ROBOT')) {
       $kw_spiders = 'Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla';
       $kw_browsers = 'MSIE|Netscape|Opera|Konqueror|Mozilla';
       if(!strexists($_SERVER['HTTP_USER_AGENT'], 'http://') && preg_match("/($kw_browsers)/i", $_SERVER['HTTP_USER_AGENT'])) {
       define('IS_ROBOT', FALSE);
       } elseif(preg_match("/($kw_spiders)/i", $_SERVER['HTTP_USER_AGENT'])) {
       define('IS_ROBOT', TRUE);
       } else {
       define('IS_ROBOT', FALSE);
       }
     }
    return IS_ROBOT;
    }  
     
     
  • 相关阅读:
    MoveWindow() SetWindowPos()的区别与联系
    SEO搜索引擎优化基础
    Windows核心编程小结1
    STL学习笔记8 -- 函数对象
    Java关于反射
    多线程处理慢sql查询小笔记~
    前端小菜鸡使用Vue+Element笔记(二)
    前端小菜鸡使用Vue+Element笔记(一)
    Hive/hbase/sqoop的基本使用教程~
    Hive/Hbase/Sqoop的安装教程
  • 原文地址:https://www.cnblogs.com/lyg0126/p/6228070.html
Copyright © 2011-2022 走看看