做 URL 发现时,很多站点的入口并不是被封锁,而是没有被“指出来”。页面能打开、返回 200、也没有 robots 限制,但蜘蛛从站内链接走不到它,只能依赖 Sitemap 或外部链接碰运气。这类页面通常被称为孤岛页面,它未必完全不被抓,但发现路径明显变窄,更新后的回访也更容易滞后。
孤岛页面常见的形成方式
先别急着补链,先确认它为什么没有入口。常见原因有几种:
- 页面只提交了 Sitemap,站内没有任何指向它的链接。
- 链接由前端 JS 在交互后才插入,首屏 HTML 里找不到 href。
- 入口藏在很深的分页、筛选或折叠组件里,蜘蛛翻不到。
- 导航、面包屑、相关推荐都遗漏了该栏目或该批内容。
- 入口链接被 nofollow 或 robots meta 阻断,虽然存在但不传递发现路径。
这些情况里,只有最后一种属于“写了但被限制”,其余大多属于“根本没有写”。
先判断是不是真孤岛
用日志和抓取记录交叉验证
判断时不要只看 Sitemap 提交量。可以拉一段服务器日志,按蜘蛛 UA 过滤,看目标 URL 有没有被请求过、首次请求时间是什么、请求时返回的状态码是什么。如果日志里完全没有记录,再去检查站内链接。
- 在栏目页、首页、聚合页搜索目标 URL,看是否存在可点击的 a href。
- 检查链接是否被 JS 渲染,首屏 HTML 是否包含该地址。
- 对比 Sitemap 中的 URL 数与内链可达 URL 数,看差值集中在哪些目录。
- 确认链接没有被 nofollow、robots meta 或 WAF 规则误伤。
如果日志显示蜘蛛来过但返回 5xx、超时或连接重置,那它更可能是“临时孤岛”,问题在服务器稳定性,而不是内链。
内链补链的优先级
补链不是把所有页面都堆到首页。更合理的顺序是从离首页近、相关性强的位置开始:
- 先补栏目页和分类页,让每个内容至少有一个稳定入口。
- 补面包屑和上一级列表,保证层级路径可回溯。
- 补相关推荐、同标签、同系列入口,增加被发现的机会。
- 检查分页组件,确认翻页链接可抓取,不要只用按钮加载。
- 确认新发布的页面会自动出现在某个固定列表或聚合页中。
补链后不要立刻期待抓取变化,URL 发现和回访调度需要时间。更实际的做法是观察一段时间的日志,看新入口是否带来请求。
服务器稳定性会放大孤岛问题
即使入口已经补上,如果服务器在蜘蛛来访时频繁超时、返回 5xx 或连接被重置,蜘蛛也可能降低回访频次。对孤岛页面来说,本来入口就少,一次失败可能意味着很长时间不再被尝试。核对时可以把时间对齐:日志里蜘蛛请求的时间段,是否正好对应服务器负载高峰、发布任务或备份窗口。
孤岛页面不等于永远不被抓,但它对服务器稳定性和入口完整性的要求更高。入口越少,容错空间越小。
一个可执行的核对顺序
- 从 Sitemap 抽一批 URL,去站内搜索是否存在内链。
- 查看首屏 HTML,确认链接不是纯 JS 交互产物。
- 检查链接是否被 nofollow、robots meta、WAF 拦截。
- 用日志确认蜘蛛是否来过,以及返回状态和耗时。
- 从栏目、面包屑、相关推荐、分页四个位置补入口。
- 观察两周日志,确认新入口是否带来抓取请求。
把这几步做完,通常能区分“没入口”和“入口不稳定”两类问题。前者靠内链结构解决,后者要回到服务器稳定性和抓取窗口去处理。