我们跨境万站计划在维护独立站的过程中经常出现网站无法访问或响应缓慢的情况,有时候会有网站打不开的情况,严重影响了访客体验和我们客户的正常运营。今天我们来分析一个由于百度爬虫爬取页面过度消耗服务器资源导致网站打不开的问题。
一、网站打不开的表现
最近有客户反应网站无法打开,错误提示如下:

二、问题排查
这种情况一般是服务器资源耗尽导致。接到我们客户的请求后,我们进行网站错误排查,第一个怀疑对象就是流量攻击。我们之前有个客户就是这样,有人进行流量攻击导致网站打不开。因此第一步我们就查看了客户的谷歌分析,如果发现异常流量,比如某段时间流量暴增,或者是流量集中来自于某几个国家,那么很有可能就是流量攻击。我们可以暂时屏蔽这个地区的访客就行了。
本次这个客户我们排查的过程中没有发现这个流量攻击的情况,却发现流量里面有大量的百度蜘蛛。
三、百度蜘蛛为什么会消耗服务器资源?
我们发现过去 24小时内此网站大约有 23,111 次请求。
主要流量来源是:Baiduspider(百度蜘蛛)
它持续大量抓取 WooCommerce 商店页面和分类页面,并且生成了大量不同的筛选组合 URL,例如:
filter_category
filter_color
stock_status
分页参数(pagination)
其他类似筛选参数
这些 URL 会被系统认为是不同的动态页面,因此很多请求无法命中缓存(Cache MISS)或者绕过缓存(Bypass),每个页面需要重新生成,耗时大约:0.5 秒 ~ 2.6 秒,这导致:PHP 进程持续运行、CPU 使用率长期升高以及网站响应变慢。
四、解决方法:
- 限制 Baiduspider 抓取
建议通过:
robots.txt
CDN 防火墙
WAF规则
限制百度蜘蛛访问。
例如:禁止抓取大量无意义筛选 URL。
- 禁止搜索引擎收录筛选页面
重点限制:
filter_category
filter_color
stock_status
per_page
以及各种产品筛选组合页面。因为WooCommerce筛选会产生几十万甚至无限数量 URL。而搜索引擎会认为这些都是不同页面。结果导致蜘蛛无限循环抓取。
例如:
/shop/?filter_color=red
/shop/?filter_color=blue
/shop/?filter_color=red&stock_status=in-stock
/shop/page/2/?filter_color=red
我们写了一下robots规则,限制百度蜘蛛抓取:
User-agent: Baiduspider
# 禁止WooCommerce筛选参数
Disallow: /*?filter_
Disallow: /*&filter_
# 禁止库存筛选
Disallow: /*?stock_status=
Disallow: /*&stock_status=
# 禁止每页数量参数
Disallow: /*?per_page=
Disallow: /*&per_page=
# 禁止排序参数
Disallow: /*?orderby=
Disallow: /*&orderby=
# 禁止分页筛选组合
Disallow: /*?paged=
Disallow: /*&paged=
# 禁止WooCommerce AJAX请求
Disallow: /*wc-ajax=
# 禁止购物车/结算/账户页面
Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/
# 禁止搜索结果
Disallow: /?s=
Disallow: /search/
# 禁止WordPress后台
Disallow: /wp-admin/
五、总结:
通过以上方法就能解决因为百度等搜索引擎蜘蛛爬取导致的网站速度变慢和打不开的问题。除此之外还有很多方法比如增加CDN,优化WooCommerce筛选插件、修改WP-Cron运行方式、减少统计插件记录机器人、优化缓存和Cart Fragment等。但是使用我们今天分享的方法就可以解决90%以上的此类问题。




