如何保护/监控您的网站不被恶意用户抓取

时间:2008-12-21 22:25:16

标签: web-crawler screen-scraping monitoring

情况:

  • 网站内容受用户名/密码保护(并非所有受控制,因为他们可以是试用/测试用户)
  • 由于用户名/密码限制,普通搜索引擎无法获取
  • 恶意用户仍然可以登录并将会话cookie传递给“wget -r”或其他内容。

问题是监控此类活动并做出响应的最佳解决方案是什么(考虑到网站政策不允许抓取/抓取)

我可以考虑一些选择:

  1. 设置一些流量监控解决方案,以限制给定用户/ IP的请求数量。
  2. 与第一点相关:自动阻止某些用户代理
  3. (Evil :))设置一个隐藏的链接,当访问时注销用户并禁用他的帐户。 (据推测,普通用户不会访问它,因为他不会看到它点击它,但机器人会抓取所有链接。)
  4. 对于第1点。你知道一个已经实施的好解决方案吗?有任何经验吗?一个问题是,一些误报可能表现为非常活跃但人类 用户。

    对于第3点:你觉得这真的很邪恶吗?或者您是否看到任何可能的问题?

    同时接受其他建议。

9 个答案:

答案 0 :(得分:5)

我不建议自动锁定,不是因为它们必然是邪恶的,而是因为它们向恶意用户提供他们绊倒传感器的即时反馈,让他们知道不要对下一个做同样的事情他们注册的帐户。

用户代理阻止可能不会非常有用,因为显然用户代理很容易伪造。

关于您可能做的最好的事情是监控,但是如果您发现恶意行为,您仍然需要询问您将要做什么。只要您有不受控制的访问权限,您锁定的任何人都可以在不同的身份下再次注册。我不知道你需要什么样的信息才能获得一个帐户,但只是一个名字和电子邮件地址,对任何人来说都不会是一个障碍。

这是典型的DRM问题 - 如果有人能够看到这些信息,那么任何人都可以用它做任何他们想做的事情。你可以让它变得困难,但最终如果某人真的有决心,你就无法阻止它们,并且你冒着干扰合法用户和伤害你的业务的风险。

答案 1 :(得分:2)

第1点有你自己提到的问题。此外,它无法帮助对网站进行较慢的抓取,如果确实如此,那么合法的重度用户可能会更糟糕。

您可以转换第2点,只允许您信任的用户代理。当然,这对于伪造标准用户代理的工具没有帮助。

第3点的变体只是向网站所有者发送通知,然后他们可以决定如何处理该用户。

同样,对于我在第2点的变体,您可以将其设置为更柔和的操作,并通知有人正在使用奇怪的用户代理访问该网站。

编辑:相关,我曾经有一个奇怪的问题,当我访问我自己的不公开的网址时(我只是暂存一个我没有宣布或链接到任何地方的网站)。虽然除了我之外,没有人应该知道这个URL,但我突然注意到了日志中的命中。当我跟踪这个时,我看到它来自某个内容过滤网站。原来我的移动ISP使用第三方来阻止内容,它拦截了我自己的请求 - 因为它不知道该网站,然后它获取了我试图访问的页面,并且(我假设)做了一些关键字分析以决定是否阻止。这种事情可能是你需要注意的尾部情况。

答案 2 :(得分:1)

取决于我们谈论的是哪种恶意用户。

如果他们知道如何使用wget,他们可能会设置Tor并每次都获得新IP,慢慢复制你拥有的所有内容。我不认为你可以在不给你的(支付?)用户带来不便的情况下阻止这种情况。

与游戏,音乐,视频的DRM相同。如果最终用户应该看到某些内容,则无法保护它。

答案 3 :(得分:1)

简短回答:无法可靠地完成。

您可以通过简单地阻止在某个时间范围内导致一定数量命中的IP地址(一些Web服务器支持开箱即用,其他需要一些模块,或者您可以通过解析日志文件和例如使用iptables),但你需要注意不要阻止主要的搜索引擎爬虫和大型ISP的代理。

答案 4 :(得分:0)

选项3的问题在于,一旦刮刀计算出正在发生的事情,自动注销将是微不足道的。

答案 5 :(得分:0)

@frankodwyer:

  • 只有受信任的用户代理才能工作,尤其要考虑由addons或.net版本修改的IE用户代理字符串。会有太多的可能性而且它可能是伪造的。
  • 第3点的变化,向管理员发出通知可能会有效,但如果管理员没有持续监控日志,则意味着无法确定延迟。

@Greg Hewgill:

  • 自动注销也会禁用用户帐户。至少必须创建一个新帐户,留下更多的路径,如电子邮件地址和其他信息。

随机更改3的logout / disable-url会很有趣,但不知道我将如何实现它:)

答案 6 :(得分:0)

http://recaptcha.net

每次有人登录或注册时。也许你可以每隔十次显示验证码。

答案 7 :(得分:0)

添加评论:

  • 我知道你无法完全保护普通用户应该能够看到的东西。我一直在解决问题的两个方面:)
  • 从开发者方面来看,您认为花费的时间与受保护案例的最佳比例是多少?我猜一些简单的用户代理检查可以删除一半或更多潜在的抓取工具,我知道你可以花几个月的时间来保护最后的1%

同样,从服务提供商的角度来看,我也感兴趣的是一个用户(爬虫)不会为其他用户消耗cpu /带宽,所以你可以指出任何好的带宽/请求限制器吗?

对评论的回应:平台规范:基于在JBoss AS上运行的JBoss Seam的应用程序。但是前面有一个apache2。 (在linux上运行)

答案 8 :(得分:0)

Apache有一些带IP限制的模块AFAIK,对于我自己的带有大量数字内容的大型Java / JSP应用程序,我使用自己的servlet过滤器来做同样的事情(并限制来自一个IP块的同时连接,等)。

我同意上面的评论,最好是微妙,以便恶意用户无法判断他们是否/何时绊倒了你的警报,因此他们不知道采取规避措施。在我的情况下,我的服务器似乎变得缓慢,片状和不可靠(所以那时没有变化)......

RGDS

戴蒙