动态页面确认可见内容,不能只看浏览器里“肉眼能看到什么”,也不能只抓一段HTML源码。对“高收录域名”这类已经有稳定抓取基础的站点,更可靠的做法是:把原始响应、渲染后DOM、用户实际可见区域分成三层,逐一对照。只有三层都能对应上,才能判断某段内容是否真的对用户和抓取系统可见。
多人协作时,最常见的分歧是有人说“页面上有”,有人说“代码里没有”。这通常不是谁对谁错,而是观察对象不同。
判断“动态页面可见内容”时,要同时记录这三层。只写“页面有”不够,只写“源码没有”也不够。
先取原始响应,再看渲染结果。假设目标是一段价格说明文字,可以按下面步骤执行:
curl -s URL -o page.html。这里的URL替换成待检查的动态页面地址。page.html 中搜索目标文字。搜不到,说明它不在原始响应里,属于依赖脚本插入的内容。如果原始响应里没有、渲染后DOM里有,下一步不是马上判定“不可见”,而是继续判断它是否真的呈现给用户,以及抓取环境是否能得到同样结果。
对高收录域名来说,页面能被抓取不等于每个动态片段都能被稳定看到。下面四项要分开记录:
display:none、visibility:hidden、opacity:0、零高度容器、移出视口等状态。这里要强调一个常见误区:robots.txt 的抓取限制不等于可靠的索引移除。页面被限制抓取,不代表其中的动态内容会自动从索引中消失;同样,站点地图也不保证收录。确认可见内容时,不要把抓取限制、站点地图和索引状态混成同一件事。
多人协作减少返工的关键,是把模糊描述改成可执行条件。例如不要写“价格模块要可见”,而写成:
如果目标内容必须依赖JavaScript渲染,交付说明里要写清依赖条件:哪个脚本、哪个接口、失败时显示什么。这样复查的人才能复现,而不是靠“我这边能看到”来争论。
复查时至少换一个环境:不同浏览器、不同视口、无缓存状态,或者关闭脚本后再看原始响应。若发现目标内容消失,先记录现象,再排查原因。可能原因包括脚本报错、接口失败、样式隐藏、视口变化、权限或登录状态不同。不要在没有证据时断言是某一个原因。
涉及具体站点时,还要分别核查不同搜索引擎的抓取与渲染支持情况。HTTPS 不保证安全无漏洞或排名,它只是传输层的一项条件。动态页面可见内容的确认,最终要落到“谁在什么条件下能看到什么”,而不是一句“页面已上线”。
下一步:挑一个当前争议最大的动态模块,按“原始响应、渲染后DOM、首屏截图”三份材料各留一份记录,再让开发和验收的人对照同一份条件确认。