robots.txt写法 - 动态页面怎样确认可见内容

📍 WDQWDWQD987AAAAA:216.73.216.230
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /2106b4d482d0.html
📄

robots.txt写法 - 动态页面怎样确认可见内容

要确认动态页面的可见内容,不能只看浏览器里显示的结果。正确做法是:先明确该页面对爬虫是否可访问,再对比“原始HTML”“渲染后的DOM”“实际展示给用户的文本”三者是否一致,最后把判断依据写进交付记录。动态页面常见的问题是内容由JavaScript在加载后生成,而robots.txt只控制抓取,不控制渲染,也不等于索引移除。

先区分三个不同层面的“可见”

多人协作时返工往往来自各方说的“可见”不是同一件事。建议在交付文档里固定三个口径:

只有三者都确认,才能说动态页面的内容对搜索引擎是可见的。robots.txt写法本身只影响第一层,写错会直接阻断抓取;写对也不保证后两层成立。

用一次可复现的检查替代口头确认

执行步骤可以固定为四步,责任人和验收标准一并写清:

  1. 用curl或抓取工具请求目标URL,保存原始HTML,确认返回状态码与robots.txt是否允许该路径。
  2. 在禁用JavaScript的条件下打开同一URL,记录页面中出现的文本。若目标内容消失,说明它依赖脚本生成。
  3. 在启用JavaScript的条件下获取渲染后的DOM,搜索目标文本节点,确认它已进入文档结构而非仅存在于脚本变量中。
  4. 在真实浏览器中核对用户可见状态,检查是否被懒加载、点击展开或登录状态影响。

判断结果:原始HTML无、渲染后有,说明内容可被抓取但依赖渲染;原始HTML和渲染后都无,说明内容未进入页面;原始HTML有但用户看不到,说明是展示层问题,与robots.txt无关。

robots.txt写法容易踩的两个边界

第一,抓取限制不等于索引移除。用Disallow屏蔽一个动态路径,只能阻止爬虫抓取,已经抓取过的URL仍可能出现在结果中。若要移除索引,需要配合noindex,但前提是该页面能被抓取到,否则noindex不会被读到。

第二,动态URL常带参数,写法上要避免误伤。例如假设有/list?page=2这类分页,若用Disallow: /list会把所有分页一并挡住。此时应先用测试工具验证规则匹配结果,再决定是否放行分页路径。站点地图提交不保证收录,HTTPS也不保证安全或排名,这两项不能当作可见性的验收依据。

交付物里应该留下什么

为减少返工,每次确认动态页面可见内容时,交付记录至少包含:目标URL、robots.txt相关规则片段、原始HTML中是否含目标文本、渲染后DOM中是否含目标文本、用户可见状态、执行时间与执行人。若结论是“不可见”,要写明是抓取层、渲染层还是展示层的问题,并给出对应责任方。不同搜索引擎对脚本渲染的支持情况须分别核查,不能用一次测试结果覆盖所有引擎。

下一步:挑一个当前最常出问题的动态模板页,按上面的四步跑一遍,把结果填进交付记录,再据此决定是改robots.txt写法、改渲染方式,还是改前端展示逻辑。

图1 图2

nginx