注册期间Facebook和Twitter等网站如何防范僵尸程序?我的意思是,注册表上根本没有验证码?
我想为一个项目创建一个注册表单,我不想在注册过程中使用bot,并且Captchas通常很难看.
编辑: 我的问题是在注册期间,因为我知道Facebook首次使用Captchas进行注册.
小智 9
Facebook使用某种隐藏的垃圾邮件保护,如果您查看注册表单的来源,您会看到以下内容:
class="hidden_elem"><div class="fsl fwb">Security Check</div>This is a standard security test that we use to prevent spammers from creating fake accounts and spamming users.
Run Code Online (Sandbox Code Playgroud)
所以当javascript认为你是一个机器人时,捕获变得可见.
几乎没有哪种方法可以让机器人更难以完成无需捕获的注册,例如填写表单的时间,鼠标点击事件的发起者等等.也是基于随机会话的表格形式(直接提交直接提交而不先下载表格)
还有一些人使用隐藏的表单元素和常见名称,如'email',在css中设置为不可见,但常见的简单机器人会尝试填写所有表单字段,因此如果此隐藏元素具有任何值,则可以阻止它们
twitter和fb花费大量时间开发tecniques以阻止垃圾邮件发送者,我认为他们不会将其公之于众,因为它们对抗垃圾邮件发送者会产生反作用.
但是你可以从fb或twitter下载所有客户端javascripts并根据需要研究它们,因为大部分保护将发生在客户端而不是服务器上.
服务器只能发出一些随机会话变量,检查请求中的有效头,总体时间等,它真的有限.
在用户填写表单期间,一些站点也在服务器和客户端之间使用ajax交换,这主要是为了让bot开发人员更难以进行类似的虚假数据交换.
无论如何,不幸的是,在没有简单的解决方案的情况下进行体面的保护,特别是没有验证码或某种问题
此外,对于提交按钮,您可以使用图像映射而不是按钮,您可以使用像PHP中的GDI之类的东西在随机位置上使用提交的botton图像动态创建大图像,并使用css仅显示该图像的一部分按钮,并在服务器端检查点击鼠标的X和Y位置,这将很难让机器人破坏.除非他们使用真正的浏览器,只是模仿键盘和鼠标.无论如何,正如我所说,不幸的是,哪里不容易解决.