检查动态页面里的死链,不能只看浏览器地址栏是否返回 200。很多动态页面先用同一个 URL 返回框架,再由 JavaScript 请求数据、拼接内容。此时页面外壳是活的,真正想检查的链接或内容可能已经失效。正确做法是:先确认页面可见内容由谁生成,再分别检查原始 HTML、渲染后 DOM 和实际网络请求。
动态页面常把内容放在接口请求之后。服务器对页面 URL 返回 200,只说明外壳可访问,不说明列表、详情、分页或推荐位已经成功加载。如果接口返回 404、410、空数组,或者前端脚本报错,用户看到的可能是空白、加载失败或旧缓存。对检查死链来说,要区分两种对象:页面 URL 本身,以及页面渲染后出现的链接和内容。
用浏览器打开目标页,在开发者工具中查看网络请求和元素面板。若关闭 JavaScript 后仍能看到主要链接,说明内容偏服务端输出;若关闭后只剩空容器,说明关键内容依赖客户端渲染。还可以查看页面源代码,搜索目标文字或链接:源代码里没有、元素面板里有,通常就是脚本后插入的。这个判断决定后面用哪种检查方式。
批量检查时,普通爬虫可能只抓原始 HTML,抓不到脚本生成的链接。可以改用能执行 JavaScript 的渲染方式,或先抓接口数据再提取 URL。若页面需要登录、验证码或特定地区访问,先确认检查环境与真实用户环境是否一致,否则状态码不能直接当作死链结论。
404 或 410 可视为明确失效信号;返回 200 但内容是错误页或空壳,需要继续看正文和标题。假设一个动态列表页,原始 HTML 只有加载动画,渲染后出现 20 条链接。逐条请求后发现 3 条返回 404,2 条返回 200 但正文为空。这里能确认的是:3 条为明确死链,2 条为内容异常,需要结合接口和模板继续定位。不能因为页面 URL 是 200 就认为全部正常。
robots.txt 限制抓取,不等于能从索引中可靠移除页面;站点地图提交也不保证收录。检查动态页面时,如果发现链接被 robots.txt 阻止,先判断它是“不允许抓取”还是“已经失效”,两者处理方式不同。HTTPS 只说明传输层加密,不保证页面内容有效,也不保证没有死链。不同搜索引擎对 JavaScript 渲染和索引的处理并不相同,需要分别用各自的控制台或抓取工具核查,不能拿一个平台的结果直接推断另一个平台。
把每个动态页面的 URL、检查时间、是否启用 JavaScript、渲染后链接、请求状态码和判断结果记在同一张表里。下次复查时用相同条件重跑,才能看出是链接真的失效,还是接口波动、登录状态或渲染环境变化造成的误判。