2

情况:

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

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

我可以想到一些选择:

  1. 设置一些流量监控解决方案来限制给定用户/IP 的请求数量。
  2. 与第一点相关:自动屏蔽部分用户代理
  3. (邪恶:))设置一个隐藏链接,当访问该链接时会注销用户并禁用他的帐户。(大概普通用户不会访问它,因为他不会看到它来点击它,但机器人会抓取所有链接。)

对于第 1 点,您是否知道已经实施的良好解决方案?有什么经验吗?一个问题是,对于非常活跃的人类用户,可能会出现一些误报。

对于第 3 点:你认为这真的很邪恶吗?或者你看到它有任何可能的问题吗?

也接受其他建议。

4

9 回答 9

5

我不会推荐自动锁定,不是因为它们必然是邪恶的,而是因为它们向恶意用户提供他们触发传感器的即时反馈,并让他们知道不要对他们签署的下一个帐户做同样的事情跟上。

并且用户代理阻止可能不会很有帮助,因为显然用户代理很容易伪造。

您可能做的最好的事情就是监控,但是如果您检测到恶意行为,您仍然必须询问您将要做什么。只要您拥有不受控制的访问权限,您锁定的任何人都可以使用不同的身份再次注册。我不知道您需要什么样的信息才能获得一个帐户,但例如,只需一个姓名和电子邮件地址,对任何人来说都不会成为太大的障碍。

这是典型的 DRM 问题——如果任何人都可以看到信息,那么任何人都可以用它做任何他们想做的事情。你可以让它变得困难,但最终如果有人真的下定决心,你就无法阻止他们,而且你可能会干扰合法用户并损害你的业务。

于 2008-12-21T23:18:07.033 回答
2

第1点有你自己提到的问题。此外,它也无助于网站的较慢爬网,或者如果确实如此,那么对于合法的重度用户来说可能会更糟。

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

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

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

编辑:相关,当我访问我自己的不公开的 URL 时,我曾经遇到过一个奇怪的问题(我只是在登台一个我没有在任何地方宣布或链接的网站)。尽管除了我之外没有人应该知道这个 URL,但突然间我注意到日志中有点击。当我找到它时,我发现它来自某个内容过滤网站。原来我的移动 ISP 使用了第三方来阻止内容,它拦截了我自己的请求——因为它不知道该站点,然后它获取了我试图访问的页面,并且(我假设)做了一些关键字分析为了决定是否阻止。这种事情可能是您需要提防的尾端情况。

于 2008-12-21T22:39:00.997 回答
1

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

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

它与游戏、音乐、视频上的 DRM 相同。如果最终用户应该看到某些东西,您就无法保护它。

于 2008-12-21T23:17:16.130 回答
1

简短的回答:它不能可靠地完成。

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

于 2008-12-22T01:25:40.443 回答
0

选项 3 的问题是,一旦爬虫弄清楚发生了什么,自动注销将是微不足道的。

于 2008-12-21T22:45:16.570 回答
0

@frankodwyer:

  • 只有受信任的用户代理不起作用,尤其要考虑被插件或 .net 版本修改的 IE 用户代理字符串。有太多的可能性,它可以被伪造。
  • 第 3 点的变化。通知管理员可能会起作用,但如果管理员不经常监控日志,这将意味着不确定的延迟。

@格雷格休吉尔:

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

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

于 2008-12-21T22:53:19.393 回答
0

http://recaptcha.net

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

于 2008-12-21T23:20:53.347 回答
0

添加评论:

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

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

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

于 2008-12-21T23:34:11.853 回答
0

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

我同意上面的评论,最好是微妙的,这样恶意用户就无法判断他们是否/何时触发了您的警报,因此他们不知道采取规避行动。在我的情况下,我的服务器似乎变得缓慢、不稳定和不可靠(所以那里没有改变)......

Rgds

达蒙

于 2009-01-07T08:59:25.530 回答