Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

我的绝招——根除Discuz!广告机器人(自动灌水)的方法

[复制链接]
chinakr 发表于 2010-1-26 03:36:55 | 显示全部楼层 |阅读模式
本帖最后由 chinakr 于 2010-01-27 19:50 编辑

作者:清北DIY俱乐部/chinakr
日期:2010-01-26

从建立清北服务网站(清北技术论坛,http://QuickBest.com.cn/discuz)以来,一直在和Discuz!广告机器人(自动灌水机)进行着艰苦卓绝的斗争。喜欢考古的朋友可以参阅:

论坛灌水机器人的原理、实现、源代码下载和垃圾广告防治
    http://quickbest.com.cn/discuz/viewthread.php?tid=18692
验证码不显示?
    http://quickbest.com.cn/discuz/viewthread.php?tid=47032
清北服务网站用户注册启用邮件认证
    http://quickbest.com.cn/discuz/viewthread.php?tid=45762
Discuz!论坛广告机器人多多怎么办?
    http://quickbest.com.cn/discuz/viewthread.php?tid=47060
规则调整,新注册用户2小时内不能发帖
    http://quickbest.com.cn/discuz/viewthread.php?tid=45678
和机器人流氓做斗争 记升级Discuz! 6.1+UCenter 1.0的艰难历程
    http://quickbest.com.cn/discuz/viewthread.php?tid=26338

从上面这些文章可以看到,Discuz!本身就提供了不少防止自动发贴机器人的办法。这些功能位于“Discuz!管理中心 -> 全局 -> 注册与访问 -> 注册”,具体来说包括:

* 修改“注册文件名”,默认是“register.php”
* 修改“注册链接文字”,默认是“注册”
* “新用户注册验证”设置为“E-mail验证”或“人工审核”

另外在“Discuz!管理中心 -> 全局 -> 安全验证 -> 验证码设置”和“Discuz!管理中心 -> 全局 -> 安全验证 -> 验证问答设置”中还可以选择在“新用户注册”时:

* 启用验证码
* 启用验证问答

还有一个可能被使用的功能就是“Discuz!管理中心 -> 全局 -> 注册与访问 -> 访问控制”中的“新手见习期限(小时)”,比如设置为“2”,那么新注册用户2小时内不能发贴。

上述功能是根据最新的Discuz! 7.2的功能设置和界面设计来描述的。

不过让人觉得可惜、痛心和寒心的是——上面这6种方法,对于日益猖獗的自动广告灌水机器人完全无用!为什么这么说呢?因为我自己的实际经验就是这样,进行了这些设置以后,机器人依然来去自如。让我们简单分析一下这么多防御措施是怎么被一一突破的:

方法1和方法2:修改“注册文件名”和修改“注册链接文字”

因为大部分站长采用的都是默认模板或者由默认模板修改而来的模板,因此注册入口的位置是有规律可循的,比如“注册”总是在“登录”前面。这样,机器人只要采用一种或者几种正则对论坛首页进行解析,就能找到正确的注册入口。

方法3:“E-mail验证”或“人工审核”

E-mail验证已经完全没用了,广告机器人可以使用163、sina、yahoo、msn等多种邮箱自动完成注册的验证环节。人工审核有时效性差、工作量大的不足,而且很多广告机器人的验证问题也很有迷惑性,容易大量产生漏网之鱼,费力不讨好。

方法4和方法5:验证码和验证问题

验证码和E-mail验证一样,可以说已经完全没有用了,机器人是怎么识别验证码的我没有研究过,但是它们的确做得很出色。验证问题也一样没有用,这个我估计是采用了人工辅助的办法,只要人工回答出一个问题,就可以自动注册一堆机器人帐号。

方法6:“新手见习期限”

现在很多广告机器人注册了几天、十几天、几十天,甚至几百天以后才来论坛灌水,因此设置“新手见习期限”除了影响人类用户的用户体验,实际上已经没有什么帮助。

那么,我又是怎么根除Discuz!广告机器人的呢?别急,听我慢慢道来。

先看看我是怎么设置的:

“Discuz!管理中心 -> 全局 -> 注册与访问 -> 注册 -> 注册文件名”:index.php

“Discuz!管理中心 -> 全局 -> 注册与访问 -> 注册 -> 注册链接文字”:请访问导航栏的“加入清北服务网站”进行注册

“Discuz!管理中心 -> 界面 -> 界面设置 -> 导航栏”
    -> 名称:加入清北服务网站
    -> 链接:to_quickbest.php (提示:这里的文件名不要出现register字样,否则会被一部分机器人挖掘出来)

这些设置实施以后的效果可以访问清北技术论坛(http://QuickBest.com.cn/discuz)来查看,简单来说就是让原有的注册入口彻底消失,新增一个自定义的注册入口。

这个办法虽然看起来比较土,而且效果不尽完美,但是对付自动灌水的广告机器人却是非常有效,让机器人无法自动注册,从源头上解决问题——因此我在本文标题中提到的“绝招”、“根除”可以说是一点儿也不过分的。

Discuz!的下一个版本其实也可以考虑按照我这种思路彻底重新设计一下注册入口,让机器人找不到入侵的大门而无法肆虐。

希望本文能帮助和之前的我一样的,还在和广告机器人进行着艰苦卓绝的斗争的站长们,早日脱离苦海:)

更新(2010-01-27):忘了说了,还需要修改register.htm模板文件,才能正常注册。比如我使用的是默认模板,那么需要修改 “discuz/templates/default/register.htm”,把其中的:

    <form method="post" name="register" id="registerform" class="gateform" action="$regname?regsubmit=yes">

修改为:

    <form method="post" name="register" id="registerform" action="to_quickbest.php?regsubmit=yes">

感谢wufujun2000的提醒!

本文地址:http://quickbest.com.cn/discuz/thread-68988-1-1.html

(欢迎转载;转载请注明作者和出处)
guhayi 发表于 2010-1-26 03:54:41 | 显示全部楼层
支持一个阿.....
回复

使用道具 举报

 楼主| chinakr 发表于 2010-1-26 11:30:49 | 显示全部楼层
谢谢支持:)
回复

使用道具 举报

wufujun2000 发表于 2010-1-26 11:35:01 | 显示全部楼层
试了一下,效果暂时还行,不知道时间长了怎么样
回复

使用道具 举报

wufujun2000 发表于 2010-1-26 18:22:28 | 显示全部楼层
发现问题了,如果在后台把注册页面改成index.php就会注册不成功了,只能从前台模板里进行修改。把注册链接的变量直接写死成index.php
回复

使用道具 举报

 楼主| chinakr 发表于 2010-1-26 21:49:55 | 显示全部楼层
发现问题了,如果在后台把注册页面改成index.php就会注册不成功了,只能从前台模板里进行修改。把注册链接的 ...
wufujun2000 发表于 2010-01-26 18:22



    不会啊,因为register.php改成to_quickbest.php了,这个是实际的注册入口,放在导航栏上了
回复

使用道具 举报

gotocs 发表于 2010-1-27 14:48:51 | 显示全部楼层
根本就不行...我测试你的站了不行....
回复

使用道具 举报

 楼主| chinakr 发表于 2010-1-27 15:17:27 | 显示全部楼层
我看看,之前是没问题的...
回复

使用道具 举报

wufujun2000 发表于 2010-1-27 17:02:44 | 显示全部楼层
就是因为改了
“Discuz!管理中心 -> 全局 -> 注册与访问 -> 注册 -> 注册文件名”:index.php,这个就不行了
我看了代码了。register.htm这个模板里form的action的值是需要跳到“注册文件名”的这个文件的,你引到index后,注册文件就不对了,无法返回正确的值,所以注册不成功了。现在需要把register.htm的form的action手动写死,不要用变量就可

源代码:
  1. <form method="post" name="register" id="registerform" class="gateform" onsubmit="ajaxpost('registerform', 'returnmessage4', 'returnmessage4', 'onerror');return false;" action="$regname?regsubmit=yes">
复制代码
修改后的代码:
  1. <form method="post" name="register" id="registerform" class="gateform" onsubmit="ajaxpost('registerform', 'returnmessage4', 'returnmessage4', 'onerror');return false;" action="to_quickbest.php?regsubmit=yes">
复制代码
这样才能实现以你现在的功能下,注册成功不会报错,不过经常实际测试,阻拦注册机的效果不是很好。

你现在能拦住应该是你本身正常注册都注册不进去的原因
回复

使用道具 举报

 楼主| chinakr 发表于 2010-1-27 19:52:00 | 显示全部楼层
确实是register.htm忘记修改了,
之前改成了quickbest_register.php,
现在应该修改成to_quickbest.php。

感谢提醒,顶楼已经更新了!

这个确实是到目前为止唯一的,
我发现的对付注册机器人有明显效果的办法。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-24 05:43 , Processed in 0.027679 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表