Discuz封锁蜘蛛最有效的方法

Posted lyg0126

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
}  

 

 
 

以上是关于Discuz封锁蜘蛛最有效的方法的主要内容,如果未能解决你的问题,请参考以下文章

Discuz论坛开启伪静态最详细的教程!

Discuz代码片段

discuz X3.1 源代码阅读,记录代码片段

如何用discuz建网站

需要一种有效的方法来避免使用 Laravel 5 重复代码片段

discuz x2.5怎么设置才能象官方一样被收录