阻止 yandex.ru bot

Ros*_*oss 5 robots.txt search-engine

我想阻止来自 yandex.ru 搜索机器人的所有请求。它的流量非常大(2GB/天)。我首先阻止了一个 C 类 IP 范围,但这个机器人似乎来自不同的 IP 范围。

例如:

Spider31.yandex.ru -> 77.88.26.27 spider79.yandex.ru -> 95.108.155.251 等等。

我可以在 robots.txt 中加入一些拒绝,但不确定它是否尊重这一点。我正在考虑阻止 IP 范围列表。

有人可以建议一些通用的解决方案。

小智 6

不要相信你在论坛上读到的关于这个的内容!相信你的服务器日志告诉你什么。如果 Yandex 遵守 robots.txt,您将在日志中看到证据。我亲眼看到 Yandex 机器人甚至不读取 robots.txt 文件!

不再浪费时间使用长 IP 列表,这些列表只会大大降低您的网站速度。

在 .htaccess 中输入以下几行(在每个站点的根文件夹中):

SetEnvIfNoCase User-Agent "^Yandex*" bad_bot
Order Deny,Allow
Deny from env=bad_bot
Run Code Online (Sandbox Code Playgroud)

我做了,现在所有 Yandex 得到的是 403 Access denied 错误。

再见 Yandex!


Ros*_*oss 1

我当前的解决方案是这样的(对于 NGINX Web 服务器):

if ($http_user_agent ~* (Yandex) ) {
        return 444;
}
Run Code Online (Sandbox Code Playgroud)

这是不区分大小写的。它返回响应 444。

该指令查看用户代理字符串,如果检测到“Yandex”,则关闭连接而不发送任何标头。444 是 Nginx 守护进程可以理解的自定义错误代码