为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查字符串是否可能由机器人生成?

如何检查字符串是否可能由机器人生成?

子衿沉夜 2021-11-25 16:00:14
我有垃圾邮件问题。一些机器人(我相信)正在绕过 Google recaptcha 并将如下所示的字符串插入到我网站上的表单中:dtbNPRpfczVvAJEXqueSKscY有谁知道我可以使用的任何 JS 或 C# 代码很可能表明上述字符串是随机生成的?如果我可以检查正在填写的字段并知道其中几个可能是机器人生成的,那么我可以阻止提交。例如,上面的字符串似乎有超过正常数量的 ucase 字符。更新: 目前正在考虑对某些字符串使用密码强度检查器。如果字符串高于弱,那么它很可能是垃圾邮件。我的网络主机说“尝试另一个recaptcha”。更新:好。我在这方面学到了很多东西,并获得了一些有用的代码,因此非常感谢您的输入和回答。然而,在周末忽略了这个问题后,我又看了一遍。我注意到垃圾邮件机器人绕过所有表单验证。然后一分钱掉了。该机器人将直接路由并发布到它。我还没有设置 CSRF(跨站点请求伪造)。这意味着代理可以从站点域外的 url 发布信息。呸!我已将此添加到表单中: @Html.AntiForgeryToken()但是我的一些路线缺少检查它的代码:  try            {                this.ValidateCsrfToken();            }            catch (CsrfValidationException)            {                return Response.AsText("Csrf Token not valid.").WithStatusCode(403);            }所以。很抱歉浪费您的时间。那立即修复了它。
查看完整描述

2 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

随机字符串检测比较复杂,与机器学习有关。我不建议您自己实现它,也许拼写检查 JS/C# 库会有所帮助。

除此之外,关于机器人预防,我尝试提出一些建议:

  • 确保您已正确实施 Google recaptcha。如果可能,请使用 reCAPTCHA v3,并确保您已在后端验证 g-recaptcha-response。Google recaptcha 并非 100% 可靠,可以被一些 Anti Captcha 解决方案绕过,但正确的实现是基本的。

  • 过滤掉可疑的 IP 地址。阻止发送随机生成的字符串的 IP 地址。


查看完整回答
反对 回复 2021-11-25
?
繁花如伊

TA贡献2012条经验 获得超12个赞

带有 .js 扩展名的随机 16-40 个随机字符名称脚本,您可以在其中查看以下格式的信息,如 userAgentKey、timezoneKey、browserKey。您可以使用 XHR 和 JS 信息在 Sources 选项卡或 Network 选项卡中检查脚本。您可以创建正则表达式来获取将匹配文件信息的所需脚本信息。[A-Za-z0-9]{14,40}.js 例如:ytpbsalvddssjopc.js


interrogate: function(e) {

                var t = {};

                t = this.userAgentKey(t),

                t = this.languageKey(t),

                t = this.screenKey(t),

                t = this.timezoneKey(t),

                t = this.indexedDbKey(t),

                t = this.addBehaviorKey(t),

                t = this.openDatabaseKey(t),

                t = this.cpuClassKey(t),

                t = this.platformKey(t),

                t = this.doNotTrackKey(t),

                t = this.pluginsKey(t),

                t = this.canvasKey(t),

                t = this.webglKey(t),

                t = this.touchSupportKey(t),

                t = this.videoKey(t),

                t = this.audioKey(t),

                t = this.vendorKey(t),

                t = this.productKey(t),

                t = this.productSubKey(t),

                t = this.browserKey(t),

                t = this.windowKey(t),

                t = this.locationKey(t),

                t.fonts = "",

                t.devices = null,

                this.keys = t,

                this.parallel([this.fontsKey, this.devicesKey], e)


查看完整回答
反对 回复 2021-11-25
  • 2 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信