你更新了文章,可百度搜不到;改了产品页,蜘蛛却还在抓旧版本——别急着怪内容或外链,先看看CDN是不是悄悄把爬虫拦在了门外。
很多站长卡在这一步:日志里蜘蛛踪迹全无,服务器明明在线,页面也正常打开,就是不被收录。真相往往藏在那层“加速”的背后。
CDN怎么把蜘蛛挡在门外的?
CDN本质是一道缓存门。用户来,它快速递出存好的页面;蜘蛛来,它却经常不分青红皂白——要么直接给缓存版,要么用安全规则一把拒之门外。
它不主动识别谁是Googlebot,也不关心你刚上线的新页面。对CDN来说,“快”是第一要务;对搜索引擎来说,“新”才是命门。两个目标撞在一起,吃亏的总是收录。
有个做工业设备B2B网站的朋友,半年没收录核心产品页。最后发现,CDN的WAF规则误判Googlebot为恶意扫描,封掉了大半IP段。手动放行后,一周内收录明显提升。
你的CDN设置,哪条规则在误伤蜘蛛?
打开你天天用的CDN控制台,直奔这几个关键位置:
安全防护规则
防爬功能默认不长眼——它说的“爬虫”,包括百度、谷歌、必应的官方蜘蛛。有客户开了阿里云CDN的“高级防护”,结果百度蜘蛛连续三天返回403。把Baiduspider加进UA白名单,抓取立马恢复。
缓存规则
静态资源缓存7天没问题,但文章页、详情页这类常更新的内容,如果也被设成缓存1小时甚至1天,蜘蛛每次来都拿旧数据。检查你的缓存策略,确保动态页面不进长期缓存池。
节点调度逻辑
蜘蛛IP不是均匀分布的。有的CDN只让百度蜘蛛走北京、上海节点,其他地区请求要么超时、要么被丢弃。你可以关掉区域限制,或者让CDN服务商帮你把蜘蛛流量固定路由到稳定节点。
有个电商站就遇到这问题:90%的蜘蛛请求卡在非主干节点,抓取成功率低得离谱。调完智能调度策略后,失败率大幅下降。
怎么确认蜘蛛是不是被CDN拦了?
别靠猜,三招直接验:
方法一:比对服务器日志
关掉CDN(比如临时切回源站),等半天,看日志里有没有蜘蛛访问记录;再开CDN,同样观察。如果前者有、后者几乎为零,基本能锁定CDN拦截。
方法二:用curl模拟蜘蛛请求
在终端里跑这一行(替换为你自己的域名):
curl -I -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://yoursite.com
返回403、502、超时?大概率被拦了。返回200但内容是JS跳转或空白?说明CDN给了缓存或做了前端重写。
方法三:用站长平台抓取诊断
百度搜索资源平台和Google Search Console都有现成的“抓取诊断”工具。输个URL,点一下,就能看到蜘蛛是否成功抵达、响应是否正常。有个博客站长就是靠这个工具发现90%的URL都在连接超时,最后定位到CDN的长连接配置太激进。
不同CDN厂商,蜘蛛策略差在哪?
各家CDN对蜘蛛的“友好度”真不一样,不是换家就行,得知道怎么调:
Cloudflare
默认“Under Attack”模式会强制验证所有请求,蜘蛛也得过验证码。必须在防火墙规则里明确放行Googlebot、Baiduspider等UA。另外,像Rocket Loader这类自动优化功能,会改写HTML结构,蜘蛛可能看不懂——建议为蜘蛛UA单独关闭。
阿里云CDN
它的“智能压缩”和“页面优化”功能,会在回源时改HTML、合并CSS,导致蜘蛛看到的和用户不一样。记得在配置里为蜘蛛UA关闭这些选项。还有,“HTTPS强制跳转”如果没配好,蜘蛛可能陷入301循环,永远到不了正主。
腾讯云CDN
默认不跟随源站重定向。如果你的源站做了301跳转,CDN直接把301甩给蜘蛛,它就不继续跟了。必须手动开启“回源跟随重定向”,让CDN替蜘蛛把跳转走完。
又拍云
缓存规则灵活是优点,也是坑点。比如你写了“所有.html结尾页面缓存1小时”,那蜘蛛每次来都拿到1小时前的快照。得专门加一条规则:当UA匹配蜘蛛时,缓存时间设为0。
有个做外贸独立站的客户,用Cloudflare但一直没配蜘蛛白名单,Google三个月只抓到首页。按文档补上几条规则后,两周内收录从几十条涨到上千条。
CDN的缓存策略,怎么区分蜘蛛和用户?
CDN不会自己长脑子认蜘蛛,你得亲手告诉它:“这是爬虫,别缓,直接回源。”
第一步:按User-Agent分流
在CDN缓存规则里,新增条件判断:
- 如果请求头
User-Agent包含Googlebot→ 缓存时间设为0,强制回源 - 如果包含
Baiduspider或Bingbot→ 同样设为0 - 其他情况,走你原来的缓存策略
第二步:给蜘蛛单独配回源HOST
很多CDN支持“不同UA走不同回源地址”。你可以把蜘蛛请求直接指向你的服务器真实IP,绕过所有中间缓存和优化。
第三步:关掉蜘蛛的页面优化
图片懒加载、JS/CSS自动合并、HTML自动压缩……这些对用户友好,但对蜘蛛全是干扰。在CDN后台找到“页面优化”类开关,为蜘蛛UA单独关闭。
有个资讯站编辑每天发几十篇,但蜘蛛只抓首页。他做完UA分流+强制回源后,第二天就开始抓内页,一周后收录量明显增长。
1个今天就能执行的操作
打开你正在用的CDN控制台(阿里云/腾讯云/Cloudflare/又拍云都行),找到缓存配置或回源策略页面。
新增一条规则:当User-Agent包含Googlebot、Baiduspider、Bingbot时,将缓存时间设为0,并勾选“强制回源”。
设置完,立刻去百度搜索资源平台或Google Search Console,提交3个你最近更新的页面链接。
24小时后,打开抓取日志,看这几条记录是不是变成了“200 OK”和“已抓取”。