如果他不遵守 robots.txt 的规则,如何阻止蜘蛛

How to block spider if he's disobeying the rules of robots.txt

如果 crawler/spider 搜索机器人不遵守写在 robots.txt 文件中的规则,有什么方法可以阻止它们。如果是,我在哪里可以找到更多相关信息?

我更喜欢一些 .htaccess 规则,否则 PHP。

有一些方法可以防止大多数机器人抓取您的网站。

除了通过用户代理和已知 IP 地址进行过滤外,您还应该实施行为驱动的阻止。这意味着,如果它像爬虫一样,就阻止它。

您可以找到多个搜索引擎机器人列表 here。但大多数大玩家都服从 robots.txt.

所以另一个相当大的部分是由于机器人行为造成的阻塞。当您使用像 Laravel 或 Symfony 这样的框架时,事情会变得不那么复杂,因为您可以轻松地设置一个要在每次页面加载之前执行的过滤器。如果没有,您必须实现一个在每次页面加载之前调用的函数。

现在有一些事情需要考虑。蜘蛛通常会尽可能快地爬行。因此,您可以使用会话来测量给定时间跨度内页面加载和页面加载之间的时间。如果超过数量 X,客户端将被阻止。

遗憾的是,这种方法依赖于机器人正确处理 sessions/cookies,但情况可能并非总是如此。

另一种或额外的方法是测量来自给定 IP 地址的页面加载量。这很危险,因为可能有大量用户使用相同的 IP 地址。所以这可能会排除人类。

我能想到的第三种方法是使用某种蜜罐。创建一个指向特定站点的 link。 link 必须对计算机可见,但对人类不可见。用一些 css 把它藏起来。如果某人或某物正在使用隐藏的 link 访问该页面,您可以(接近)确定它是一个程序。但请注意,有些浏览器插件会在他们能找到的每个 link 中预加载。所以你不能完全依赖这个。

根据您网站的性质,最后一种方法是将完整网站隐藏在捕获之后。就可用性而言,这是一项苛刻的衡量标准,因此请谨慎决定它是否适用于您的用例。

然后就是使用flash或者复杂的技术Javascript大部分bot都看不懂,但是很恶心,不想说了。 ^^

最后,我现在得出一个结论。

通过使用写得很好的 robots.txt 大多数机器人都会让你一个人呆着。除此之外,你应该结合前面提到的所有或部分方法来抓坏人。

毕竟,只要您的网站是公开可用的,您就永远无法逃避专门为您的网站量身定制的定制机器人。当浏览器可以解析它时,机器人也可以解析它。

为了获得更有用的答案,我需要知道您试图隐藏什么以及为什么。