首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网页爬虫超载网站

网页爬虫超载网站
EN

Stack Overflow用户
提问于 2017-07-04 15:35:20
回答 2查看 1.4K关注 0票数 1

我们有一个问题,我们的一些网站,雅虎,谷歌,Yandex,必应Ahrefs和其他所有索引网站在同一时间,这杀死了网站。

我已经将fail2ban配置为阻止源I,但是它们永远都在改变,所以不太理想。我也尝试过使用robots.txt,但这并没有什么不同。

我们已经尝试过将站点放在cloudflare后面,但是这也没有什么区别,我们所能做的就是阻止源is。

我还能做什么?

目前,我们正在使用Nagios监视站点,当站点变得没有响应能力时,nginx就会重新启动nginx,但这似乎远远不够理想。

运行nginx的Ubuntu服务器

Robots.txt文件在这里:-

代码语言:javascript
复制
User-agent: *
Disallow: /

张贴在这里,以防有任何东西,我可以让我们的开发人员尝试。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-07-04 18:53:57

一种简单的方法是根据请求中的User-Agent头限制它们的等级。从原理图上看,这如下所示。

在Nginx配置中的http级别:

代码语言:javascript
复制
map $http_user_agent $bot_ua {
  default '';

  "~*Googlebot|Bing" Y;
}

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

这将确保GooglebotBingUser-Agent中的所有请求的速率限制在每秒1个请求。请注意,速率限制将是“全局的”(vs.per-ip),也就是说,所有的机器人都将在一个队列中等待访问网站。该配置可以很容易地修改为在每个IP的基础上的比率限制或白名单一些用户代理。

serverlocation级别:

代码语言:javascript
复制
limit_req zone=bot burst=5;

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

  • Nginx利率限制文件
  • Nginx地图文档

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

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

票数 2
EN

Stack Overflow用户

发布于 2017-07-04 15:59:54

你的robots.txt应该能用。请注意,并非所有爬虫都尊重robots.txt。

robots.txt是区分大小写的,它需要在www.yourdomain.com/robots.txt上具有世界可读性。

查看添加Crawl-delay: 10时会发生什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44909824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档