检查robots协议在移动端与桌面端的差异,核心不是找两份不同的robots.txt,而是确认同一份规则是否因User-Agent、抓取路径或渲染方式不同而产生不同结果。多数站点只有一份/robots.txt,但搜索引擎可能用移动User-Agent抓取、用移动端HTML渲染,也可能沿用桌面端抓取配置。因此要分别检查:规则文件是否按UA分支、移动端页面是否被单独屏蔽、以及移动端渲染后是否出现新的可抓取链接。
打开浏览器访问https://你的域名/robots.txt,看文件中是否存在User-agent: Googlebot、User-agent: Googlebot-Mobile、User-agent: Bingbot或User-agent: *等分组。常见有三种结构:
User-agent: *:移动端与桌面端读取同一套规则,差异通常来自抓取时使用的URL或渲染结果,而不是robots文件本身。/m/,移动爬虫却屏蔽了/m/,这时差异直接来自robots分组。m.example.com与www.example.com,要分别访问各自的/robots.txt,不能只查主域。判断依据是:先看规则分组,再看移动URL是否被单独引用。若移动端页面与桌面端共用同一URL、仅靠响应式设计变化,robots差异通常只体现在抓取工具声明的UA上。
仅用桌面浏览器打开robots.txt不够,因为服务器可能按User-Agent返回不同内容。可以用命令行或抓取工具模拟移动爬虫请求,观察返回的规则是否与桌面请求一致。假设使用curl,可执行:
curl -A "Mozilla/5.0 (Linux; Android 10; Pixel 3) AppleWebKit/537.36 Chrome/120 Mobile Safari/537.36" -i https://你的域名/robots.txt
检查项包括:
Disallow: /m/或Disallow: /*?mobile=之类只影响移动路径的规则;Allow写在Disallow之后,导致实际匹配结果与预期不同。适用条件是:你怀疑服务器端按UA做了差异化响应。若两次请求返回完全一致,说明robots文件本身没有移动/桌面分支,差异要往渲染和链接发现方向查。
robots协议只控制抓取,不控制索引,也不保证页面一定被收录。移动端常见的问题是:桌面HTML里存在的链接,在移动端渲染后没有出现;或者移动端用JavaScript延迟加载内容,导致抓取工具看到的链接集合不同。检查步骤:
<a href>链接数量与目标URL。判断结果:如果移动端HTML里根本没有某链接,那么即使robots允许抓取,抓取工具也可能发现不了该URL;如果链接存在但被robots屏蔽,则属于抓取规则问题。两者代价不同:前者要改渲染或输出方式,后者只需调整规则。
面对移动端与桌面端robots差异,通常有两种处理方向:
选择依据是:移动端URL是否独立、内容是否与桌面端等价、以及你是否能持续维护UA分支。若无法持续维护,统一规则通常更稳妥;若移动端存在大量不希望被抓取的参数页或独立频道,才考虑保留分支。
/robots.txt,对比返回内容与状态码。Disallow。下一步:选定一个移动端代表性URL,用移动User-Agent请求其robots规则和页面HTML,记录“规则是否允许”与“链接是否出现”两个结果,再决定是统一规则还是保留分支。