动态页面确认可见内容,核心是判断“浏览器最终渲染出的、用户能看到的文字和图片”是否与搜索引擎抓取到的内容一致。不能只看HTML源代码,因为动态页面常由JavaScript在浏览器中执行后才生成可见内容。要确认这一点,应使用能执行脚本的抓取工具或浏览器开发者工具,对比初始响应与渲染后的DOM,再检查关键内容是否出现在渲染结果中。
假设某产品详情页用前端框架渲染,服务器返回的HTML里只有一个空的<div id="app"></div>,标题、价格和库存文字都由JavaScript请求接口后插入。团队里有人用“查看网页源代码”看到空容器,就判断页面没有可见内容;另一个人用浏览器打开却能看到完整信息。两人结论冲突,交付就会返工。
正确做法是分三步确认:
curl或关闭JavaScript的浏览器请求页面,记录返回的HTML中是否包含目标文字。这一步代表不执行脚本时能拿到什么。判断结果时要注意:渲染结果中出现文字,不等于搜索引擎一定收录或排名,但它是确认“可见内容存在”的必要条件。不同搜索引擎对JavaScript渲染的支持程度不同,需要分别用对应平台的抓取测试工具核查,不能用一个引擎的结果推断另一个。
多人协作时最常见的返工来源,是有人只检查“查看源代码”里的文字,发现没有就要求开发改成服务端渲染;也有人只截一张浏览器截图,就认为搜索引擎一定能看到。这两种做法都缺少对比依据。
更稳妥的检查项包括:
robots.txt限制。需注意,robots.txt的抓取限制不等于可靠的索引移除,它只约束合规抓取行为,不能替代页面级移除手段。如果接口被robots.txt禁止抓取,渲染工具可能拿不到数据,导致可见内容缺失。这时应先确认限制是否必要,再决定是否调整,而不是直接断定页面没有内容。
为了让协作方减少返工,确认结论不要只写“页面正常”或“页面有问题”。可以按固定格式记录:
例如,假设检查发现价格文字只在渲染后出现,而接口请求返回正常,那么判断是“内容依赖脚本生成”,待办可以是“确认目标搜索引擎能渲染该脚本,并补充服务端输出作为兜底”。如果接口请求被拦截,则判断是“数据未到达”,待办应先处理拦截规则。
上述方法适用于内容由JavaScript动态插入、且团队需要确认“用户可见内容是否可被抓取”的场景。它不适用于纯静态页面,也不用于判断排名高低。站点地图不保证收录,HTTPS不保证安全无漏洞或排名,这些都不能替代对可见内容的实际检查。
当页面内容依赖登录、地理位置或个性化推荐时,抓取工具看到的可能和真实用户不同。此时应区分“公开可见内容”和“登录后内容”,分别确认,不能把登录后的截图当作公开页面的可见内容证据。
下一步,选一个具体动态页面,用关闭JavaScript的响应和渲染后的DOM各取一次结果,把目标文字的出现位置记在同一张检查表里,再交给开发或内容负责人复验。