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

use*_*531 5 javascript bots spam

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

use*_*288 6

不引人注目的方法的最佳选择是混淆。也就是说,假设一个邪恶的垃圾邮件公司雇用某人来弄清楚如何为您的网站编写机器人(除非您为数百万用户提供服务,否则在 99% 的情况下不会发生),您需要做到这一点尽可能困难和尽可能多地浪费时间来了解您网站的幕后情况。

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

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


Mik*_*sen 5

这篇文章对我来说似乎很可疑.该复选框验证码似乎是针对垃圾邮件机器人一味填写表格,一个像样的防守,知道什么对他们碰巧在网站上,但是如果有人在写有任何形式的洞察到你的页面一个机器人,好处结束.

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

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

  • 第 2 部分。如果有人设计了一个机器人来瞄准您的网站,那么上述解决方案都无法接近,但是,您显然在让某人想要瞄准您的网站方面做得很好,所以生活不会那么糟糕。在这些情况下,您只能使用验证码、电子邮件验证、某种推荐服务等。 (2认同)