Google 的 reCAPTCHA v3 的工作原理
Posted
技术标签:
【中文标题】Google 的 reCAPTCHA v3 的工作原理【英文标题】:How Google's reCAPTCHA v3 works 【发布时间】:2018-12-12 18:11:28 【问题描述】:Google 已推出 reCAPTCHA v3。它消除了所有用户摩擦。我希望用它来保护我的网站。但是,我不确定这将如何保护我的网站。如果黑客使用外部工具在我的网站上发送垃圾邮件而不使用我提供的界面怎么办? reCAPTCHA v3 将如何阻止这种情况?
【问题讨论】:
请注意,Google 打算将其降低摩擦,但并非总是如此。例如,我的浏览器针对跟踪和指纹识别进行了强化,因此,在 reCAPTCHA 让我通过之前,可能需要长达一分钟的时间来点击 CAPTCHA。 (如果必须的话,我愿意接受这个权衡。Google 已经对我有足够的了解了。) 【参考方案1】:reCAPTCHA v3 将如何阻止 [Spam]?
有多种启发式方法可用于检测自动化系统,例如来自某个 IP 的请求数量、浏览器指纹识别、Google 帐户 cookie 等等。谷歌似乎使用其中一些。如果不确定,则会显示挑战。
如果黑客不使用我提供的界面,使用外部工具在我的网站上发送垃圾邮件怎么办?
当客户端通过您必须在服务器端验证的检查时,Google 会为客户端生成一个令牌。如果有人没有通过验证码(机器人),他们就没有令牌。
【讨论】:
理论上它很漂亮。实际上它很丑陋,reCAPTCHA v3 是有害的,对于尝试使用您的网站的用户来说,这是您可以提供的最糟糕的用户体验。 @barbolo v3 不显眼,那么是什么让它成为最糟糕的用户体验? @cthorpe 有趣的是 Google (Youtube) 不使用 V3。它使用 v2(用于检索用户电子邮件)。即使用户从未与表单交互,V3 也会在页面加载时加载。 V2 可以设置为按需加载,从而减少初始页面加载。 V3 不是这样工作的。因此,就用户体验而言,在每次页面加载时加载 V3 可能会导致 V2 可能没有的不必要的延迟。 @Jarom,v3 文档特别说“确保在用户执行操作而不是页面加载时调用执行”。 v3 可以也应该像 v2 一样按需加载。 @OfficeAddinDev 无论如何,脚本都会在页面加载时加载,但令牌会在两分钟后过期,应该在执行而不是页面加载时调用。请参阅文档:developers.google.com/recaptcha/docs/v3。 V3 脚本总是预先加载(这会导致我提到的页面加载时间问题),但 V2 可以按需加载和调用。【参考方案2】:除了您网站上的用户行为跟踪(如 Jonas Wilms 所解释的那样),v3(和 v2)还根据您的 IP、ASN、浏览器以及基于这些信息的有关您系统的任何类型的信息做出决策通过您的 HTTP 请求发送。
唯一的区别是 V2 是一个完整的解决方案,也就是说,如果它认为用户可能是机器人,它将带来额外的挑战,直到它确信用户是人类。另一方面,V3 是非侵入式的。它会根据上面讨论的参数生成一个分数并将其传递给您。然后,您将根据此分数决定采取适当的步骤(例如发布挑战,或进行双重身份验证等)。
IMO,如果您想获得更多控制权,最好从 V2 解决方案开始实施 V3,或者如果用户得分较低,则有更好的方式来挑战用户。
(Here 是一篇关于差异的有趣文章)
【讨论】:
是否有来自 Google 的权威消息来源表明他们使用 IP 和 ASN 来评估风险?【参考方案3】:简而言之 google 会跟踪您的整个光标和键盘移动,从移动鼠标选择表单字段到按 Tab 更改字段。
验证 reCAPTCHA 是否正常工作 --> 提交表单,然后 点击刷新;它会要求重新提交。单击继续。但是作为 这是一种非常类似于机器人活动,无需任何键盘移动光标即可提交表单,reCAPTCHA 将阻止 表单提交或任何其他事情发生。
【讨论】:
以上是关于Google 的 reCAPTCHA v3 的工作原理的主要内容,如果未能解决你的问题,请参考以下文章
Google reCaptcha v3 与 google reCaptcha Enterprise
如何在服务器端验证 Google reCAPTCHA v3?