【发布时间】:2012-12-24 04:47:30
【问题描述】:
我想保留那些窃取内容并占用我网站带宽的不良爬虫程序(也就是定义上会忽略 robots.txt 的坏机器人)。同时,我不想干扰合法人类用户的用户体验,或阻止行为良好的机器人(例如 Googlebot)将网站编入索引。
这里已经描述了处理这个问题的标准方法:Tactics for dealing with misbehaving robots。但是,该线程中提出和赞成的解决方案不是我正在寻找的。p>
一些不良机器人通过 Tor 或僵尸网络进行连接,这意味着它们的 IP 地址是短暂的,很可能属于使用受感染计算机的人。
因此,我一直在考虑如何通过让 IP 被列入黑名单的“误报”(即人类)再次访问我的网站来改进行业标准方法。一个想法是完全停止阻止这些 IP,而是要求他们在被允许访问之前通过验证码。虽然我认为 CAPTCHA 是合法用户的 PITA,但使用 CAPTCHA 审查可疑的恶意机器人似乎比完全阻止对这些 IP 的访问更好。通过跟踪完成 CAPTCHA 的用户会话,我应该能够确定他们是人类(并且应该将他们的 IP 从黑名单中删除),还是智能到足以解决 CAPTCHA 的机器人,将他们置于更黑名单上。
但是,在我继续实施这个想法之前,我想问问这里的好人是否预见到任何问题或弱点(我已经知道一些 CAPTCHA 已被破坏 - 但我认为我应该能够处理)。
【问题讨论】:
-
堆栈溢出采用验证码方法。你注意到了吗?不?那么它就不是普通用户的 PITA。
-
该线程中的第二个答案也是一个好主意。 ProjectHoneyPot 是通过 DNS 解决问题的商业服务 (cloudflare.com) 的基础。 RBL 和 ProjH 之类的黑名单可以创造奇迹。 Bot 编写者非常老练,可以隐藏他们的踪迹、限制和频繁更改 IP。你永远不会阻止它们,每天都会出现一个新的。
-
@gview 那些限制机器人其实并不需要被阻止。
-
@JanDvorak 我认为阻止这些机器人真的不值得付出努力,直到它们干扰您为真正的访客提供服务的能力。让真正的访客生活困难是限制您成功的一种行之有效的方法。我永远不会用验证码打断观看。话虽如此,我在 Cloudflare 测试组中,它几乎消除了我正在测试它的站点的机器人流量。
-
@JanDvorak,是的,我肯定注意到了。关于它有多痛苦:YMMV - 我没有对此进行调查。我想听听对我提出的方法的批评,以及(我希望)改进它的建议。
标签: performance apache captcha bots robots.txt