在反刮削世界中有很多技术。我只是将它们分类。如果您发现我的答案中缺少某些内容,请发表评论。
A.基于 Web 请求的服务器端过滤
1。阻止可疑 IP 或 IP。
阻止可疑 IP 的效果很好,但如今大部分抓取都是使用 IP 代理完成的,因此从长远来看,它不会有效。在您的情况下,您会收到来自同一 IP 地理位置的请求,因此,如果您禁止此 IP,则抓取工具肯定会利用 IP 代理,从而保持 IP 独立且不被检测到。
2。使用 DNS 级别过滤
使用 DNS 防火墙属于防刮措施。简而言之,这是将您的 Web 服务设置为专用域名服务器 (DNS) 网络,该网络将过滤并防止错误请求到达您的服务器。一些公司为复杂的网站保护提供了这种复杂的措施,您可能会更深入地查看此类服务的an example。
3。拥有自定义脚本来跟踪用户的统计数据并丢弃麻烦的请求
正如您所提到的,您已经检测到一种算法,一个抓取工具会抓取网址。有一个自定义脚本来跟踪请求 url 并基于此开启保护措施。为此,您必须在 IIS 中激活 [shell] 脚本。副作用可能是系统响应时间会增加,从而减慢您的服务。顺便说一句,您检测到的算法可能会发生变化,因此会关闭此措施。
4。限制请求频率
您可以设置请求频率或可下载数据量的限制。考虑到普通用户的可用性,必须应用这些限制。与抓取工具的持续请求相比,您可能会设置 Web 服务规则以丢弃或延迟不需要的活动。然而,如果刮板被重新配置以模仿常见的用户行为(通过一些当今知名的工具:Selenuim、Mechanize、iMacros),这项措施将失败。
5。设置最大会话长度
这种措施是一个很好的措施,但现代爬虫通常会执行会话身份验证,因此切断会话时间并不是那么有效。
B.基于浏览器的识别与预防
1。为目标页面设置验证码
这是大多数情况下解决抓取问题的旧时代技术。然而,如果你的抓取对手利用anti-captcha services 中的任何一个,这种保护很可能会被关闭。
2。将 JavaScript 逻辑注入到 Web 服务响应中
JavaScript 代码应先于或与请求的 html 内容一起到达客户端(用户的浏览器或抓取服务器)。此代码用于计数并将某个值返回给目标服务器。基于此测试,html 代码可能格式错误,甚至可能未发送给请求者,从而使恶意抓取工具无法使用。逻辑可能放在一个或多个 JavaScript 可加载文件中。此 JavaScript 逻辑可能不仅适用于整个内容,也可能仅适用于网站内容的某些部分(例如价格)。为了绕过这个措施,爬虫可能需要转向甚至是more complex scraping logic(通常是 JavaScript),它是高度可定制的,因此成本很高。
C.基于内容的保护
1。将重要数据伪装成图片
这种内容保护方法如今已被广泛使用。它确实可以防止刮板收集数据。它的副作用是隐藏为图像的数据被搜索引擎索引,从而降低了网站的 SEO。如果爬虫利用OCR 系统,这种保护可能再次被绕过。
2。频繁的页面结构变化
这是非常有效的刮擦保护方法。它不仅可以更改元素 ids 和 classes,还可以更改整个层次结构。后者涉及样式重组,因此会增加额外成本。当然,如果要保持内容抓取,抓取端必须适应新的结构。如果您的服务负担得起,则不会产生太大的副作用。