百度、谷歌、必应、搜狗蜘蛛的UA特征与调度策略

我那篇蜘蛛池原理的文章写完以后,后台收到一堆私信,大半都在问同一个问题:“老铁,你把域名池、内容繁殖都讲了,蜘蛛调度到底怎么搞?我池子搭起来了,蜘蛛就是不往我目标页爬,全在域名池里自己转圈。”

这问题问到根上了。调度的核心,就是你得先认得清谁是谁。就好比你开了个货运站,来提货的有顺丰的车、邮政的车、京东的车,你连车标都分不清,怎么把对的货往对的车上装?

老铁SEO今天就把国内外这几只主要爬虫的“身份证”和“脾气”拿出来,一个个扒,然后告诉你怎么把它们往该去的地方赶。

百度、谷歌、必应、搜狗蜘蛛的UA特征与调度策略

一、先搞懂UA是个啥,别觉得这玩意是玄学

UA,全称User-Agent,你可以理解成蜘蛛来你家敲门时递上来的名片。名片上写着“你好,我是百度蜘蛛”“你好,我是谷歌机器人”。正常的搜索引擎爬虫一定会老实递名片,因为这是互联网的基本礼仪。

但问题在于,名片可以伪造。市面上大量采集程序、监控工具、甚至是竞争对手的恶意扫描器,都会把自己的UA伪装成Baiduspider或Googlebot。你要是无脑接客,等于把传销人员和真正客户都迎进贵宾室,最后被坑了都不知道怎么死的。

所以蜘蛛调度的第一步,不是写规则,而是验明正身。这一步走错,后面全白搭。

二、百度蜘蛛:国内扛把子的多重人格

百度蜘蛛的UA家族是最混乱的,光官方文档里列出来的就不下十种,而且这几年一直在改来改去。

1. 最常见的Baiduspider

你服务器日志里扒拉扒拉,大概率会看到:

Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)

这是百度最老的通用蜘蛛线。以前很好认,现在也最容易被人伪造。很多垃圾采集器直接抄这个UA就上路了。所以现在百度官方已经在逐步弱化这组蜘蛛,把更多抓取任务分给了后面的细分线。

2. 移动端专用的Baiduspider-mobile

Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.94 Mobile Safari/537.36 (compatible; Baiduspider-mobile/2.0; +http://www.baidu.com/search/spider.html)

移动蜘蛛的UA很长,而且会模仿真实的手机浏览器特征。很多站长一看日志里来了个Chrome Mobile,以为是真人用户,其实它是百度的移动爬虫。这也意味着你在调度的时候,必须把移动蜘蛛和桌面蜘蛛分开对待。

3. 图片蜘蛛Baiduspider-image

Mozilla/5.0 (compatible; Baiduspider-image/2.0; +http://www.baidu.com/search/spider.html)

这只专抓图片,跟本文要讨论的页面收录关系不大,但如果你做图片站,值得单独给它开个通道。

4. 搜索资源平台的验证蜘蛛

当你在百度站长平台提交链接、进行站点验证、或者做快速收录推送时,百度会派过来一些带有Baiduspider-renderBaiduspider-mobile-render等字样的蜘蛛。这些带render字样的,意味着它会渲染你的页面,执行JS。很多纯静态的蜘蛛池抓不到JS跳转内容,但render蜘蛛可以。这是百度最近两年最大的变化,也是对蜘蛛池调度最大的冲击——只做UA跳转而不管渲染环境,这类蜘蛛抓不到你预期让它看的内容,等于白引。

调度策略:对待百度蜘蛛,IP反查是必须的。在规则里先通过rdns(反向DNS解析)验证来访IP是否真的属于*.baidu.com*.baidu.jp等百度官方域。因为百度蜘蛛的IP段其实相对固定,市面上流传的百度蜘蛛IP表虽然做不到100%准确,但配合UA双重判断,基本能筛掉九成冒牌货。

另外,百度的移动蜘蛛和桌面蜘蛛现在对抓取频率、页面大小、响应速度的要求完全不同。你的目标站如果是个PC站,就优先把Baiduspider-mobile往移动适配页面引流;如果目标站是响应式的,那就统一喂桌面蜘蛛,移动蜘蛛看情况给个canonical标签。不要两边都打,容易被判定为混淆内容。

三、谷歌蜘蛛:技术最好,也最记仇

谷歌的蜘蛛家族相对干净,命名规范清晰,但技术手段最多,而且极其记仇——一旦它发现你在耍花招,惩罚周期比百度长得多。

1. 通用搜索蜘蛛Googlebot

Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Chrome/122.0.6261.94 Safari/537.36

注意,谷歌蜘蛛宣称自己是Chrome内核,这是为了融入正常浏览器流量,避免被一些服务商拦截。但它依然很守规矩地暴露了Googlebot标识。

2. 智能手机蜘蛛Googlebot Smartphone

Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.94 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

谷歌的移动蜘蛛和桌面蜘蛛对移动优先索引的影响巨大。目前谷歌默认都以移动版内容为准进行排名,所以如果你目标站是英文站或者外贸站,调度的时候必须重点照顾这只移动蜘蛛。

3. 广告蜘蛛、图片蜘蛛等

还有AdsBot-GoogleGooglebot-ImageGooglebot-Video等等,这些跟内容收录的直接关系不大,但如果你跑谷歌广告,AdsBot会来检查落地页质量,它抓不到内容,广告就过不了审。

谷歌调度的核心要点:必须通过官方提供的验证方式——在服务器里对来访IP执行反向DNS查询,如果返回的是*.googlebot.com格式且该IP正向解析也指向同一个主机名,才是真谷歌。直接用UA判断的,全都是送人头。

谷歌还有个极要命的习惯:它会偷偷用普通用户代理(完全不带Googlebot字样)来探测页面,看你是不是给真人看一套、给蜘蛛看另一套。这就是著名的“伪装检测”。你的蜘蛛池如果对谷歌蜘蛛做了跳转,而对普通Chrome UA显示空白或完全不同内容,几个月后全站会被手工处罚,灰飞烟灭的那种。

所以对待谷歌,调度策略必须极度保守:只做蜘蛛身份识别和记录,绝对不做内容差异化展示。蜘蛛池引Googlebot的意义在于帮助发现新URL、加快抓取节奏,而不是给它看蜘蛛劫持的假页面。你给谷歌蜘蛛看的,必须和给普通用户看的是同一份内容。

四、必应蜘蛛:被严重低估的蓝海

很多人只看百度、谷歌,完全忽略必应。但老铁手里几个B2B站的流量数据告诉我,必应带来的商业流量转化率有时候比百度还高,因为必应用户多集中在PC端、办公场景,购买决策更冷静。

必应蜘蛛主要有三种

Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
以及专门给微软Edge浏览器用的bingbot变体。

另外还有adidxbot,是必应广告蜘蛛。

必应蜘蛛相比百度和谷歌,对网站的宽容度高不少。它的验证也相对规范:官方公布的IP段通过_crawl前缀的DNS验证即可。而且必应目前对动态渲染的支持没谷歌那么激进,所以常规的UA识别加IP反查,足够用了。

调度建议:千万别忽略必应的抓取优先级。如果你的蜘蛛池只针对百度蜘蛛做了调度,而任由bingbot在池子里乱爬,会出现一个很蛋疼的局面:你的目标页在谷歌、百度还没收录,在必应已经露底了——竞争对手通过“site:你的域名”在必应上搜到你正在偷偷推的页面,得不偿失。所以在蜘蛛池调度系统里,对bingbot要么限频,要么导入到合规的展示页面,确保不要提前暴露未完成的布局。

五、搜狗蜘蛛:UA写在脸上,但IP池烂大街

搜狗的蜘蛛UA长这样:

  • PC端:Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)
  • 移动端:Sogou inst spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)

搜狗蜘蛛的UA辨识度极高,几乎没有多余伪装。但问题是,它的真实IP段已经被人扒得底裤都不剩了。大量采集器、点击工具、刷量软件都在伪造搜狗蜘蛛的UA和IP段进行恶意抓取。

更头疼的是,搜狗自身对HTTPS站点的抓取能力一直不太稳定,有时会卡在SSL握手阶段。很多蜘蛛池程序默认忽略搜狗,或者只给它最简单的HTTP页面。

调度实践:对搜狗蜘蛛,建议在池子里单独开一条“低速通道”——搜狗蜘蛛频率别拉太高,容易被服务器防火墙误杀。IP验证可以通过搜狗站长平台公布的IP列表进行匹配,但不要完全依赖,最好配合常规的蜘蛛行为特征判断,比如它是否会请求robots.txt、是否按顺序爬而非跳跃式抓取。

六、众多蜘蛛混在一起,调度策略怎么写才不打架

讲完四家主要蜘蛛的特征,老铁直接把我在用的调度框架分享出来,这个框架基于Nginx前面挂一层Lua脚本实现,当然你用PHP或Python写中间件也行,逻辑是一样的。

第一步,拿到请求头里的User-Agent,先别急着做动作,先记下来。第二步,拿来访IP去查DNS反解析,匹配对应的官方域名模式。只有UA和IP双重验证通过的,我才给它赋上一个“可信蜘蛛标签”。

第三步,才是调度分发。我按照不同搜索引擎,给不同目标站分配不同池子节点。举个例子,新上的B2B站需要百度收录,我就把验证通过的BaiduspiderBaiduspider-mobile引向那个站的URL列表;而谷歌蜘蛛我会引向我主推的外贸站;必应蜘蛛分配给企业官网;搜狗蜘蛛先限流,避免占用资源。

这里面有个技巧:在蜘蛛池里专门建一批“中转域名”,不挂任何实质内容,只做301跳转到你的目标站。这样做的好处是,即使将来某个中转域名被惩罚,你的主力站域名不受牵连。针对每个搜索引擎,使用不同的中转域名,还能分别统计各搜索引擎的抓取效率。

另外,对于带渲染功能的蜘蛛,比如Baiduspider-renderGooglebot的高版本,我会专门给它们准备一个“预渲染缓存层”——用Headless Chrome把目标页面的JS执行完,生成纯HTML,交给蜘蛛抓取。这样可以避免蜘蛛拿到空白页,同时也不会暴露蜘蛛池的底层跳转逻辑。

七、最后唠叨几句

很多人觉得蜘蛛调度就是个UA判断加跳转,这种认知跟觉得开车就是踩油门一样浅。真正的蜘蛛调度系统是你整个蜘蛛池的大脑,它需要不停地分析日志,看各个搜索引擎的爬行频率、停留时间、抓取深度,然后动态调整。今天百度蜘蛛对你目标站的抓取量突然暴跌,你不能等三天才知道,你的调度系统得在半小时内发出告警。

老铁我为了养住几个稳定池子,专门搭了一套蜘蛛日志分析面板,能实时看到每个搜索引擎蜘蛛来了多少、抓走了什么、返回了什么状态码。这些数据比排名工具给出的分数真实得多,因为它是蜘蛛亲口告诉你的,不是算法推测的。

当然,这篇文章依然只是原理和方法论。具体的配置代码、Nginx规则和反查脚本,涉及到一些敏感实现细节,不太方便在公开博客上全摊开。有需要独立蜘蛛池搭建或者想拿一套靠谱的调度中间件的,可以直接上我站的服务页找老铁聊聊,支持远程看蜘蛛日志、验证蜘蛛真身,不卖嘴炮。

下一篇文章我打算写蜘蛛池的日常维护与排错,比如池子突然不抓取了、IP被屏蔽了怎么定位,想看的朋友把老铁SEO博客添加到浏览器书签里,别等我发了找不着。

原文链接:https://www.laotieseo.com/54.html,转载请注明出处。
1

评论0

没有账号?注册  忘记密码?