【发布时间】:2015-04-21 18:12:21
【问题描述】:
我正在制作一个需要用户注册并登录的网站。我的朋友一直在用mechanize 制作机器人。该机器人多次注册该网站。当机器人产生大量用户时,用户会被添加到数据库表中。
我已经制作了一个程序来停止其中包含示例的条目,因为机器人只有一个变量,例如:
name = 0
并不断在 name 变量上加 1。
我认为他有一个这样的while循环:
import mechanize
br = mechanize.Browser()
br.open("http://www.example.com/")
br.set_handle_robots(False) # Ignores the robots.txt file
name = 0
person = 'example',name
while True:
br.select_form( 'signup' )
br.form[ 'fullname' ] = person
br.submit()
name = name + 1
所以他基本上让这个程序不停地运行,直到程序崩溃。
我希望能够使用 javascript 或 php 来阻止这种情况。
我已经搜索过这个问题的答案,但我尝试过的所有方法都失败了。我尝试制作一个计时器来查看该人在页面上停留了多长时间,因为机器人仅在网页上停留大约一秒钟。我已经在 php 和 javascript 中制作了计时器,但它们都失败了。
我考虑过验证码,但机器人仍然可以发送私人消息,如果用户每次想给朋友发消息时都必须填写验证码,我认为用户不会留在网站上。而且我不想在注册表单上有验证码,因为它看起来不吸引人。
我想尽办法阻止这一切。它已经持续了几个月,它确实减慢了网站的开发速度,因为我必须不断检查我的程序可能遗漏的任何条目。
有谁知道阻止机器人的任何其他方法。
【问题讨论】:
-
您是想保护您的网站免受一般机器人的攻击,还是仅仅保护您朋友的机器人?如果是后者,肯定有更简单的方法....
-
我的朋友似乎已经想到了各种办法。
-
您将通过一个简单的隐藏输入阻止 99% 的机器人,而机器人不会知道它是隐藏的,但仍会尝试填写。
-
我的朋友通过 Firefox 上的查看源代码选项查看 html。他会不会看到源中有一个在网页上不可见的字段。
-
如果有简单的方法,他们就不必发明验证码了。
标签: javascript php python mechanize