[介绍]如何防止论坛群发器

论坛群发器是很讨厌的,注册的时候占据了用户数不说,某些机器人还不止一次地发广告,在论坛里每个版面都发,删都累死所以我们要把机器人拒之门外怎么办呢……
首先要明确的问题是,机器人是很笨的,我们用一些非常规的方法就可以把笨蛋机器人狠狠地忽悠掉。 这里就提两个方法好了
方法一
笨蛋机器人看到一个验证码图片,会自然而然地把里面的数字或字母全部识别出来,然后一股脑都填到验证码框里。这里我们就可以利用一下了。假设我们生成的验证码图片有6位数字,那么我们可以告诉用户,你只要输入前5位,也只能输入前5位数字。如果是人的话,自然会知道只要填写前5位数字,而笨蛋机器人就不知道了,它会把全部6位数字填入。这样,只要我们发现有谁输入的验证码是6位的,就可以把它干掉了,这家伙十有八九是个笨蛋机器人。
关于如何告诉用户只输入前5位验证码的方法很多,你可以直接在网页上用自然语言描述出来,或者更进一步,不直接写在网页上,而是写在图片上,再加上一些干扰,这样打死这个机器人它都不知道我们想要告诉用户什么了。如果你的论坛用户层次较高,你更可以描述得复杂一些,比如下面的描述:“为了防止恶意注册,请你不要完整地输入六位验证码。你应该做的是只输入验证码的第壹位到第五位,而不要输入四位,或者六位,或者其他位数的验证码。也就是说,你只要输入验证码的前五位就可以了,第六位验证码是没有用的。比如说,你看到的验证码是123456,那么你只要输入12345就可以了。如果输入23456或者是1234556或者是1234或者是其他的数字的话,都是错误的。输入错误的话你就不能注册了。” 再来点干扰,笨蛋机器人想要认出这上面的字都已经很困难了,更不用对这么长的文字进行语义分析,得出我们想要告诉用户的信息了。仅输入验证码前5位是一个方法,我们也可以采用其他方法,比如说输入后5位,或者说仅输入验证码里面的偶数,或者是仅输入大于5的数,仅输入位于M后面的字母,仅输入小写字母,方法可多了。这些方法描述起来可就比“输入前五位”复杂了,笨蛋机器人更加不可能知道我们到底在说什么了。 当然,方法一需要用户参与,如果用户层次较低,水平不高的话,方法一是不太好的。下面的第二种方法可以在用户不参与的前提下禁止掉机器人。
方法二
一般我们的注册都要求用户输入电子邮件,我们可以这样做。按照正常的方法,表单中的电子邮件文本框的名字都是email,用户名文本框的名字都是username,笨蛋机器人也是通过文本框名字判断每一个文本框应该填入什么数据。这点和人不同,人并不通过文本框的名字来判断文本框应该输入什么,而是通过在网页上的描述来判断不同的文本框应该输入什么数据的。利用这一点,我们就可以把人和笨蛋机器人区分开来。我们可以这样构造一个表单

<form action="#" method="post">    
    用户名:        <input name="email" type="text">
    密码:        <input name="pass1" type="password">    
    重输密码:    <input name="pass2" type="password">
    电子邮件:    <input name="username" type="text">
</form> 

注意到了没有,我们把本应输入用户名的文本框的名字改成email,本来应该输入电子邮件的文本框的名字改成了email。这个网页显示出来,用户看起来是很正常的,会在第一个文本框输入用户名,第二个文本框输入电邮地址。而笨蛋机器人是通过文本框的名字来判断文本框应该输入什么的。笨蛋机器人看到第一个文本框的名字是email,就会以为这个文本框应该输入电邮地址,于是就在第一个文本框中输入了电邮地址,同样地,在第二个文本框输入了用户名。这下就好了,我们在程序中只要判断POST(“username”)的值是不是一个邮件地址,POST(“email”)的值是不是一个非法的邮件地址,就可以判断出这个注册请求到底是人提交的,还是笨蛋机器人提交的了。当然笨蛋机器人也可以不通过文本框的名字来判断文本框应该填入什么数据,它们也可以通过判断<input />前面的文字来判断文本框应该输入什么数据。这个问题好解决,我们可以不直接写“用户名”“电子邮件”等文字,老办法,我们用图片来写,再加上些干扰。你可以吧“用户名”“电子邮件”全部写在一张大图片上,然后对<input />使用绝对定位来把<input />固定到对应的位置。在这张大图片上,你可以再写上一大堆不相干的文字,再加上些干扰,这样笨蛋机器人就很难知道哪个文本框应该输入什么内容了。更进一步,你可以不使用email、username来给文本框命名,你可以使用随机字符串来给文本框命名,只要你在服务器先生成随机字符串,然后记着每个字符串对应的应该是什么值就可以了(其实我还是觉得对调email和username更能骗过机器人)但是要注意的是,自动填表工具在进行填表时也是通过文本框的名字进行填表的。如果对调email和username的名字的话,填表工具在进行填表时就会出错。对于这一点,可以在提交前先检查用户输入的email和username是否正确(当然用户就要麻烦点了)。
现在樱町使用的是第二个方法,到现在为止还没有发现哪个笨蛋机器人识破了这一招。以前樱町使用的是第一种方法,不过没有使用语言进行描述,而是使用CSS屏蔽了验证码的第6位(overflow:hidden;width:100px; 每个数字长20px)。但是这个方法竟然已经被识破了,现在的机器人真不像以前那么笨了,能识别CSS了(或者是这个方法有太多的人用了?)。
该用哪种方法,你应该根据自己和论坛的实际情况进行选择。机器人始终是机器人,只会死板地根据人的指令(虽然人也可以给出复杂得使机器人行为和人差不多的指令)去行动,它并不具有人类所具有的高级思维(至少现在是这样的)。只要想出一些人很容易能办到,而机器人却很难办到的事情,就可以用来防止机器人胡乱注册。防笨蛋机器人的方法是很多的,只要你愿意动脑。如果一直使用别人公开的方法,当这个方法被机器人的幕后知道以后,一般很快这个方法就会被机器人识破。所以,自己想出来的另类的方法是最能有效抵挡笨蛋机器人乱注册的。动起你的脑袋来,大脑不用会生锈,机器(人)常维护更灵活,开个论坛也是需要一定知识和想象力的。

This entry was posted in 网页开发 and tagged , , , , . Bookmark the permalink.

22 thoughts on “[介绍]如何防止论坛群发器

  1. 呃,若干年前我也大多数看得懂但是完全不懂语法
    现在基本看懂没问题了但是不怎么会写
    看来学日语的后果就是回到若干年前的水平?

    至少知道动词后置,の  な  に  も  と  が  を啥意思就可以了吧
    呃,貌似どんとこい!(含叹号)算是一个词
    要是因为这个看不懂的话属于缺乏社会体验。。

  2. 現在の萌え anime 隆盛のきっかけとなった作品の一つ。その quality の高い作画とさまざまな属性( loli 、 shota 、同性愛、近親相姦、教師と生徒の禁断の恋etc…)どんとこい!な chara 設定が相まって、良くも悪くも後続の作品に影響を与えている。

    呃,我没学过日语都看得懂。。看来千万别学日语,否则就看不懂了
    至少属性()里的关键字看得懂吧。。

    好吧来源→http://dic.nicovideo.jp/a/%E3%82%AB%E3%83%BC%E3%83%89%E3%82%AD%E3%83%A3%E3%83%97%E3%82%BF%E3%83%BC%E3%81%95%E3%81%8F%E3%82%89

    • 单词大多看得懂,但是连在一起就不知道是啥意思了的说
      今早重温日语发现很多句型都忘记了……复习……复习啊
      不过近親相姦是啥意思?表告诉偶是字面意思

  3. 看介绍猜动画→現在の萌えアニメ隆盛のきっかけとなった作品のひとつ。そのクオリティの高い作画とさまざまな属性(ロリ、ショタ、同性愛、近親相姦、教師と生徒の禁断の恋etc…)どんとこい!なキャラ設定が相まって、良くも悪くも後続の作品に影響を与えている。

  4. 不过话说

    哇,看来在gs的blog投dàiyùn广告很赚钱耶。。

    呃,刚才误会成yt了,要是那地方的话效果好像很不错。。

  5. 给出两套不同的智商测试题,然后判断一下不同难度级别的题目分数是不是差不多?
    或者给出一大堆乱七八糟的问题问是否知道,然后有大量知道linux不知道unix,或者知道microsoft不知道bill gates的情况的砍。。
    只是没办法用于验证码的说

  6. 机器人也是人做的……(好吧,这个是废话)

    话说到底是GS的论坛流量大于CLC才会被盯上的

    其实只要注册的时候弄一个问题验证码不就得了?
    Dz的后台就有这设置……到底是GS毕竟人品……

    话说,你自己写一个Login Interface不就行了?

    • 你也是人做的……(好吧,这个是废话)
      话说YT留言本是自己的接口照样被盯上了的说
      貌似咱担心小朋友不会回答问题

  7. 改验证码的方式,例如给一个红苹果,黄香蕉,随机问你苹果的颜色或者黄色的是什么
    差点忘了,最好的就是自己写注册接口,因为你用的是通用的东西,所以破解一个可以用很多地方,如果是自写的话一般就没人愿意破解了
    不管什么原因,CLC到现在没有验证码,也没有见到机器人

    • 貌似不管你了,反正大家自己想办法,办法用多了机器人就知道了
      貌似为虾米YT的留言本有N多垃圾的说?貌似YT已经引起XXX的注意了?V~

发表评论

电子邮件地址不会被公开。

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>