当前位置

紧急降低搜索引擎爬虫抓取网站速度的办法

James Qi 在 2022年6月15日 - 16:38 提交

最近几天我们国内的两个网站都遇到访问困难,检查发现是百度爬虫抓取量大增,是以前正常情况的很多倍,导致Web服务器CPU、带宽以及数据库服务器都难以应付。Googlebot也曾经出现类似情况。

办法一(站长平台设置):

按照以前的办法,我们是在百度资源平台或者Google Search Console中设置降低爬虫的抓取速率,不过这样设置后需要等待2-3天时间生效,而不能解决当时的问题。

上图:Google Search Console中限制对某网站的爬取速度(90天后恢复正常速度抓取)。

上图:百度资源平台中调整百度蜘蛛对网站爬取的频次(30天后恢复正常速度抓取)。

办法二(临时修改robots.txt):

也可以使用robots.txt来禁止一些爬虫对某些页面的访问,但也需要等待1天左右的时间才能生效。robots.txt例子:

User-agent: Baiduspider
Disallow: /af/
Disallow: /sq/

上面的例子就是让百度蜘蛛不要访问/af/和/sq/路径下的网址。当服务器性能问题解决后,需要记得去掉robots.txt中的限制,否则这些限制一直存在,这些网址以后也不会被搜索引擎爬虫抓取,以及已经抓取、索引的页面也会逐步从搜索引擎库中删除。

办法三(临时给出503“服务不可用”状态):

为了让网站可以正常访问,只好采取临时措施来限制搜索引擎的爬虫,在网上找了几篇文章:

可以用PHP或者Apache Rewrite的办法来解决,先看PHP代码片段:

<?php
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 86400'); // in seconds
print "Sorry, this page is temporarily unavailable.";
?>

把上面这段代码放在适当的程序中(例如只针对一定的url、只针对特定的user agent等条件),对访问者给出503状态,也就是告诉访问者“服务临时不可用”,让访问者间隔一段时间(程序中写的86400秒,也就是1天)后再来访问。

或者修改.htaccess来让Apache对付:

# Redirect googlebot
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} !.(css|gif|ico|jpg|js|png|swf|txt)$
RewriteCond %{HTTP_USER_AGENT} ^(.*)googlebot(.*) [NC]
RewriteRule (.*) /googlebot.php [R=503,L]
#RewriteRule .* - [R=503,L]
</IfModule>

上面的例子就是让googlebot访问非特定后缀文件的时候给出503“网页临时不可用”状态,以及显示googlebot.php中的内容。

💡 这两种办法都是有效的,从我们的经验来看可以立马降低服务器的负载,搜索引擎爬虫也会随后适当降低对这种给出503状态的页面的抓取速度以及降低对整个域名网站的抓取速度。

⚠️ 但需要注意:这只能是临时的处理办法,一般就使用几个小时,最长1-2天就需要放开,如果长期(例如超过几天时间)使用503状态,搜索引擎可能会长期降低抓取速度,甚至把这些页面从收录库中删除,从而影响网站SEO效果、降低展现和流量。

自由标签:

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。