0

我们的一些网站存在问题,Yahoo、Google、Yandex、Bing Ahrefs 和其他网站同时索引该网站,这会导致该网站死亡。

我已经将fail2ban 配置为阻止源IP,但是这些一直在变化,因此并不理想。我也尝试过使用 robots.txt,但这没什么区别。

我们已经尝试将站点置于 cloudflare 之后,但这同样没什么区别,我们所能做的就是阻止源 IP。

我还可以做些什么?

目前我们正在使用 Nagios 监控站点,当站点无响应时它会重新启动 nginx,但这似乎远非理想。

运行 nginx 的 Ubuntu 服务器

Robots.txt 文件在这里:-

User-agent: *
Disallow: /

在这里发帖,以防我有什么可以让我们的开发人员尝试的东西。

谢谢

4

2 回答 2

2

User-Agent一种简单的方法是根据请求中的标头对它们进行速率限制。示意图如下所示。

httpNginx 配置级别:

map $http_user_agent $bot_ua {
  default '';

  "~*Googlebot|Bing" Y;
}

limit_req_zone $bot_ua zone=bot:1m rate=1r/s;

这将确保所有带有GooglebotBingin 的请求User-Agent都将被限制为每秒 1 个请求。请注意,速率限制将是“全局的”(相对于每个 IP),即所有机器人将在单个队列中等待访问网站。配置可以很容易地修改为基于每个 IP 的速率限制或将一些用户代理列入白名单。

serverlocation级别:

limit_req zone=bot burst=5;

这意味着 5 个请求的“突发”是可能的。如果你愿意,你可以放弃这个选项。

当请求受到速率限制时,Nginx 将发出 HTTP 状态码 429。“理智的”网络爬虫检测到这一点并减慢扫描网站的速度。


虽然我应该说整个问题要复杂得多。有很多恶意请求假装来自 Google、Twitter、FB 等,来自各种扫描仪和爬虫(例如,请参阅此问题),它们既不尊重robots.txt也不尊重 429。有时它们非常聪明并且具有User-Agents模仿浏览器。在这种情况下,上述方法对您没有帮助。

于 2017-07-04T18:53:57.287 回答
0

您的robots.txt应该可以工作。请注意,并非所有爬虫都尊重 robots.txt。

robots.txt区分大小写,并且需要在 www.yourdomain.com/robots.txt 上可读。

看看添加Crawl-delay: 10.

于 2017-07-04T15:59:54.467 回答