我想阻止从我们的某个网站自动html抓取,同时不影响合法的蜘蛛网(googlebot等).有没有什么东西可以实现这一目标?我甚至使用了正确的术语吗?
编辑:我主要是希望阻止那些恶意这样做的人.即他们不会遵守robots.txt
EDIT2:如何通过"使用率"阻止使用...即如果检测到自动化并且流量不是来自合法(谷歌,雅虎,MSN等)IP,则验证码继续浏览.
即使不是不可能完成,这也很困难.许多"流氓"蜘蛛/爬虫不会通过用户代理字符串识别自己,因此很难识别它们.您可以尝试通过其IP地址阻止它们,但很难跟上为阻止列表添加新的IP地址.如果使用IP地址,也可以阻止合法用户,因为代理使许多不同的客户端显示为单个IP地址.
在这种情况下使用robots.txt的问题是蜘蛛可以选择忽略它.
编辑:速率限制是一种可能性,但它遇到了一些识别(和跟踪)"好"和"坏"用户代理/ IP的相同问题.在我们编写的系统内部页面查看/会话计数中,我们根据页面查看率消除了会话,但我们也不担心消除"好"蜘蛛,因为我们不希望它们在数据中计算.我们不会阻止任何客户实际查看页面.
一种方法是建立一个HTTP tar坑; 嵌入一个只对自动抓取工具可见的链接.链接应该转到一个填充随机文本和链接到自己的页面(但有其他页面信息:/tarpit/foo.html,/tarpit/bar.html,/tarpit/baz.html - 但脚本位于/ tarpit /处理200结果的所有请求).
为了让好人离开坑,如果用户代理是Google或雅虎,请为您的主页生成302重定向.
它并不完美,但它至少会减慢天真的速度.
编辑:正如康斯坦丁所建议的那样,你可以将tar pit标记为robots.txt中的限制.好人使用符合此协议的网络蜘蛛将远离焦油坑.这可能会摆脱为已知的好人生成重定向的要求.
如果您想保护自己免受通用爬虫的攻击,请使用蜜罐.
例如,参见http://www.sqlite.org/cvstrac/honeypot.好的蜘蛛不会打开这个页面,因为site的robots.txt明确禁止它.人类可以打开它,但不应该点击"我是蜘蛛"链接.坏蜘蛛肯定会跟随两个链接,因此会背叛其真实身份.
如果专门为您的站点创建了爬虫,您可以(理论上)创建一个移动的蜜罐.