我被刮了,我怎么能阻止这个?

时间:2015-03-11 19:27:31

标签: iis-7 web-scraping

每周运行几次IIS 7,我从一个地理位置看到Google Analytics上的大量点击。他们正在查看的网址序列显然是由某些算法生成的,因此我知道我正在抓取内容。有什么方法可以防止这种情况吗?非常沮丧,谷歌并没有给我一个IP。

1 个答案:

答案 0 :(得分:5)

反刮世界中有很多技术。我只是将它们分类。如果您在我的回答中找不到遗漏,请发表评论。

甲。基于Web请求的服务器端过滤

1。阻止可疑的IP或IP。

阻止可疑IP效果很好但是今天大多数抓取都是使用IP代理完成的,因此从长远来看它不会有效。在您的情况下,您从相同的IP地理位置获得请求,因此如果您禁止此IP,则刮刀肯定会利用IP代理,从而保持IP独立且未被检测到。

2。使用DNS级别过滤

使用DNS防火墙属于防刮措施。简而言之,这就是将您的Web服务设置为专用域名服务器(DNS)网络,该网络将在到达您的服务器之前过滤和防止错误请求。一些公司为复杂的网站保护提供了这种复杂的措施,您可能会更深入地查看此类服务的an example

3。拥有自定义脚本来跟踪用户的统计信息并删除麻烦的请求

正如您所提到的,您已经检测到一种算法,刮刀会抓取网址。有一个跟踪请求URL的自定义脚本,并基于此打开保护措施。为此,您必须在IIS中激活[shell]脚本。副作用可能是系统响应时间会增加,从而减慢您的服务速度。顺便说一句,您检测到的算法可能会被更改,因此请关闭此测量。

4。限制请求频率

您可以设置请求频率或可下载数据量的限制。考虑到普通用户的可用性,必须应用这些限制。与刮刀持续请求相比,您可以将Web服务规则设置为丢弃或延迟不需要的活动。然而,如果刮刀被重新配置以模仿常见的用户行为(通过一些现在众所周知的工具:Selenuim,机械化,iMacros)此措施将失败。

5。设置最大会话长度

这个措施很好,但通常现代刮刀会执行会话认证,因此切断会话时间并不是那么有效。

B中。基于浏览器的识别和预防

1。为目标页面设置CAPTCHA

这是旧时代的技术,大多数情况下确实解决了刮擦问题。然而,如果你的抓斗对手利用anti-captcha services中的任何一个,这种保护很可能会被取消。

2。将JavaScript逻辑注入Web服务响应

JavaScript代码应在请求的html内容之前或之后到达客户端(用户的浏览器或抓取服务器)。此代码用于计算特定值并将其返回给目标服务器。根据此测试,html代码可能格式不正确,甚至可能无法发送给请求者,从而导致恶意刮刀关闭。逻辑可以放在一个或多个可加载JavaScript的文件中。这种JavaScript逻辑不仅可以应用于整个内容,还可以仅应用于网站内容的某些部分(例如价格)。为了绕过这个措施,刮刀可能需要转向偶数more complex scraping logic(通常是JavaScript),这是高度可定制的,因此成本高昂。

℃。基于内容的保护

1。将重要数据伪装成图像

这种内容保护方法如今被广泛使用。它确实可以防止刮刀收集数据。它的副作用是数据被混淆为图像被隐藏用于搜索引擎索引,从而降低了网站的搜索引擎优化。如果刮刀利用OCR系统,则可以再次绕过这种保护。

2。频繁的页面结构更改

这是刮保护的有效方法。它不仅可以更改元素 ids ,还可以更改整个层次结构。后者涉及造型重组,因此增加了额外成本。当然,如果想要保持内容刮擦,刮刀侧必须适应新结构。如果您的服务可能负担得起,那么副作用就不多了。