检查搜索引擎爬虫在移动端与桌面端的差异,核心是比对同一URL在两套User-Agent下返回的HTML、状态码、重定向和robots规则是否一致。如果移动端返回的内容更少、状态码不同或跳转到别的地址,爬虫看到的就是两个页面,收录与排名判断也会随之分叉。下面给出可执行的检查顺序和判断标准。
搜索引擎爬虫通常用不同的User-Agent区分移动与桌面抓取。你要做的是用同一批UA分别请求同一URL,而不是用浏览器切换窗口宽度来模拟。移动端UA一般带有移动设备标识,桌面端UA不带。检查时记录以下字段:
如果两端状态码不同,优先排查重定向链。移动端被301到另一个URL,而桌面端没有,说明两套规则没有对齐。这种情况下,爬虫会把权重和索引信号分散到两个地址上。
最直接的检查方式是用curl分别带两套UA请求同一URL,把结果保存后对比。下面是一个可执行的示例,UA仅作示意,实际应替换为你要核查的爬虫标识:
curl -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15" -I https://example.com/page
curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" -I https://example.com/page
把-I换成-o mobile.html和-o desktop.html,再对比两个文件的正文长度、<h1>数量、<link rel="canonical">指向。判断标准是:正文主体、标题、canonical、hreflang、结构化数据在两端应当等价。如果移动端HTML明显更短,且缺少桌面端的关键内容,说明内容没有对齐。
适用条件是你能直接访问目标URL并允许外部请求。如果站点有防火墙或频率限制,先用低频请求,避免被临时封禁。判断结果是:两端HTML主体一致,说明抓取层面没有移动/桌面分叉;不一致则进入下一步定位。
robots.txt本身不区分移动端和桌面端,它按路径和User-Agent分组。你要确认的是:是否有人为地针对移动UA写了不同的Disallow规则。检查方法是查看robots.txt中所有User-agent分组,看移动爬虫标识是否被单独限制。如果移动UA被禁止抓取某路径,而桌面UA没有,移动端就不会被抓取。
站点地图也不保证收录,它只是提交URL的渠道。需要核对的是:站点地图里列出的URL,在移动端和桌面端请求时是否都返回200且内容一致。如果站点地图只列了桌面URL,而移动端实际是另一个地址,就要确认canonical是否指向了正确的版本。
三种实现方式下,检查重点不同:
m.example.com。检查重点是桌面页与移动页之间的双向标注,以及移动页的canonical是否指向自身而非桌面页。判断依据是:无论哪种方式,爬虫在两端看到的有效内容应当一致。如果移动端缺少桌面端的关键文本,即使页面能打开,也可能被判定为内容不一致。
完成比对后,用以下信号判断是否通过:两端状态码一致且均为200;最终URL一致或重定向关系明确;正文主体、标题、canonical、结构化数据等价;robots.txt没有针对移动UA的额外限制;站点地图中的URL两端均可正常返回。任何一项不通过,就回到对应环节修正。
下一步是选定一个具体URL,用两套UA各抓取一次,把状态码、最终URL和正文长度列成对照表,先找出差异最大的那一项再动手改。