例如,如果我在 stackoverflow 上并且我连续多次刷新页面,它会开始认为我是机器人并阻止我。
我怎样才能将这样的东西构建到我自己的网站中?
例如,如果我在 stackoverflow 上并且我连续多次刷新页面,它会开始认为我是机器人并阻止我。
我怎样才能将这样的东西构建到我自己的网站中?
使用 Roboo: http: //www.ecl-labs.org/2011/03/17/roboo-http-mitigator.html
2011 年在 Blackhat 演示。非常有效且易于启动和运行。我建议不要使用任何 CAPTCHA
“Roboo 使用先进的非交互式 HTTP 质询/响应机制来检测并随后缓解 HTTP 机器人,方法是验证客户端是否存在 HTTP、HTML、DOM、Javascript 和 Flash 堆栈。
如此深层次的验证淘汰了大部分不使用真实浏览器或实施完整浏览器堆栈的 HTTP 机器人,从而缓解了各种网络威胁:
也是针对 DDOS 的好措施:http ://www.rakkhis.com/2011/03/ddos-protection-strategies.html
与最近的一切一样,您可以推出自己的解决方案,或使用软件即服务。如果您对访问者隐私的可能妥协感到满意,那么有一些 Web 服务可以执行此类操作。
最值得注意的可能是Cloudflare,它可以配置为基本(免费)或高级(付费)保护。这是最近非常受欢迎的初创公司,有很多网站都在使用它。
它在您的网站前作为透明代理运行,并根据各种标准检查传入的请求,使用广泛的众包来了解数据的来源以及是否有人曾看到该 IP 做过恶意行为。数据来源包括开放数据库,例如https://www.projecthoneypot.org。然后,它会向这些用户显示一个挑战页面,要求验证,也许完成验证码。它将“威胁”归类为僵尸网络僵尸、大量垃圾邮件发送者等。在付费版本中,它还作为 WAF 运行,试图捕获 sql/xss 注入尝试。
首先,您需要评估应用程序的哪些部分有可能被自动化以获得某种优势。例如,通过多次重新加载该 stackoverflow 页面可以获得什么?也许用户的机器人可以提高他们自己的问题/答案的浏览量?
接下来是确定哪些行为构成了可能的机器人。对于您的 stackoverflow 示例,可能是单个用户在给定的小时间范围内加载一定数量的页面(不仅基于 IP,还可能是用户代理、源端口等)
接下来,您构建包含这些规则的引擎,收集跟踪数据,监控每个请求以根据标准进行分析,并将客户端标记为机器人。我认为出于性能原因,您可能希望该引擎针对 Web 日志而不是针对实时请求运行,但是您可以对此进行负载测试。
我想系统会像这样工作(使用您的 stackoverflow 示例):引擎读取网络命中的日志条目,然后将其添加到其网络命中数据库中,将该命中与该唯一用户在该唯一用户上的所有其他命中聚合页面,并记录时间戳,以便记录两个时间戳,即系列中的第一次命中和最近一次的时间戳,并且系列中的总命中数递增。
然后通过从最后一次命中的时间中减去命中次数超过阈值的所有系列的时间来查询该列表。未通过检查的唯一用户将被标记。然后在前端,您只需根据该标记用户列表检查所有命中,并采取相应措施。当然,我的算法是有缺陷的,因为我只是当场想出来的。
如果你用谷歌搜索,你会发现有很多不同语言的免费代码都有这个功能。诀窍是想出正确的规则来标记机器人行为。
拥有一个查找连接尝试的服务是相当简单的,并且每当从同一 IP 地址快速连续发生多次尝试时,它都会将该地址添加到被阻止帐户的“黑名单”中。(或者,如果你想变得花哨,启动一些应用程序/查询让这个人“验证”他们不是机器人)
在我的脑海中(我从未真正尝试过)他们..或者字典排序“清除”本身超过x时间的值,并且您在该时间范围内为每个连接增加每个值的键..如果在“x”时间范围内变得太多,他们被封锁了。
一个模糊的答案,我知道,但我希望它有帮助!