使用JavaScript生成复选框防止垃圾邮件和漫游器

时间:2013-09-03 20:10:59

标签: javascript bots spam

我已经读过,可以通过使用JS在必须设置的表单中创建一个复选框来阻止机器人(即http://uxmovement.com/forms/captchas-vs-spambots-why-the-checkbox-captcha-wins/)。这个策略有效吗?用户是否需要物理检查该框,或者客户端JS是否也可以用来检查它?

2 个答案:

答案 0 :(得分:5)

这篇文章对我来说似乎很可疑。 复选框验证码似乎是一个很好的防范垃圾邮件机器人,盲目地填写表单,对它们碰巧在的网站一无所知,但是如果有人正在编写一个对你有任何洞察力的机器人页面,好处就此结束。

最后,重要的是HTTP帖子。如果服务器可以验证POST,那么POST的创建方式或者客户端上可能运行的脚本并不重要。如果服务器正在查找名为NotABot的POST值,其值等于1,则垃圾邮件机器人可以将此值简单地包含在自己的POST中,因为服务器不知道是否有复选框是通过客户端脚本创建的。如果值必须等于初始HTML中提供的随机值,则spambot也可以获取该值。如果值必须与图像上提供的值匹配,那么您基本上创建了一个CAPTCHA。

最后,这是一项成本/收益分析,取决于您对垃圾邮件的风险承受能力与您对可用性的需求。运行一个较小的网站,也许每个帖子都可以在允许之前由人来主持。也许你不会得到足够的垃圾邮件来保证可用性的降低。如果您正在运行数百万人使用的大型站点,则可能需要采取更积极的措施来抵御机器人。这真的是你的要求。

答案 1 :(得分:4)

对于不引人注意的方法,最好的选择是混淆。也就是说,假设一个邪恶的垃圾邮件公司雇用了一个人来弄清楚如何为你的网站编写一个机器人(99%的时间赢了,除非你为数百万用户提供服务),你需要尽可能地节省时间,以便了解您网站的内容。

我曾经在我的网站的客人评论中有机器人,所以我决定过火。 (我的网站上需要使用Javascript。禁用它的人中只有很小一部分是通常的机器人或网络开发人员)

  1. 我没有使用表单标签,并且总是随机数量的CSS隐藏虚拟提交按钮与真实提交按钮混合在一起。
    • 由于提交是Javascript / ajax,因此已经过滤掉了一堆非专业机器人。
  2. 我创建了一些通过CSS隐藏的文本输入(不是输入类型="隐藏")并且被命名为" email"和其他关键词机器人一般都在寻找。
    • 如果这些已填写并提交给服务器,我可以认为它是一个机器人。
    • Bot需要了解才能填写某些字段。
  3. 我与服务器的接口需要一个由客户端加扰的隐藏验证码(对用户不可见)。
    • 服务器将随机验证码字符串传递给客户端。
    • 客户端使用Javascript函数根据DOM的一部分的日期,注释长度和字符串光栅化来对验证码进行加密,并将加扰的验证码传递回服务器进行验证。
    • Server实现相同的功能。
    • 黑客当然可以窃取或以其他方式引用此Javascript函数,因此我有10个左右的不同加扰函数,这些函数在随机URL上被换出并引用,具体取决于用户的会话。
  4. 不允许具有空用户代理字符串的客户端添加注释或以其他方式更新站点。
  5. 该网站不会明显拒绝怀疑来自机器人的评论,而是会发出一条消息,即评论/等会在几个小时后出现。 (它没有。对他们说谎!)
  6. 如果有人在查看我的Javascript源代码,我最喜欢的另一个方法是使用jsfuck.com方法来混淆部分内容。如果他们知道它是什么,它不会阻止任何人,但我喜欢想象他们看到混淆代码时脸上的表情。
  7. 检查Textareas /输入以查看是否已在其中触发了keydown事件。
  8. 总而言之,这并不能阻止任何人雇用人来访问您的网站上垃圾邮件。因此,完全复制并粘贴到textareas中的注释会被标记为可疑,并会在它们出现之前进行标记以供审核。
    • 具有该IP的用户在下一个小时内发布的所有后续评论也会被标记为要审核,不会立即显示。
  9. 标记有超过1个链接的评论以供审核。虽然大多数机器人现在都知道很多网站上的这种限制,并且不会对链接贪婪。