搜索抓取

链接可见却抓不到:解析、证书与访问限制对 URL 发现的影响

链接写在页面里只是第一步,能否真正被抓取还取决于服务器与网络环境。本文梳理 DNS 解析、证书配置、robots.txt、WAF 与限流策略这些让 URL 发现停在门外的常见原因,并给出从外到内的排查顺序和日常维护习惯。

搜索抓取

链接可见却抓不到:解析、证书与访问限制对 URL 发现的影响

聊 URL 发现的时候,注意力通常放在“链接写在哪里”。但对搜索蜘蛛来说,拿到地址只是上半程,能不能真的请求到这个地址才是下半程。DNS 解析、证书、访问控制这几环任意一个出问题,入口就变成一扇上了锁的门:地址在页面里写得清清楚楚,蜘蛛却只能停在门外。

链接存在,不等于入口可用

URL 发现其实分两步走。第一步是从页面、Sitemap、外链等来源拿到地址;第二步是对这个地址发起实际请求。第一步基本在站内可控,第二步则取决于服务器和网络环境。不少站点的问题压根不在内链结构上,而在第二步被拦住了,于是服务器日志里只有“发现”,没有“抓取”。

三类常见的中断点

解析与连接层

DNS 记录缺失、解析指向早已下线的 IP、不同地区节点解析结果不一致,都会让蜘蛛连接失败。更隐蔽的一种是源站只对特定机房或特定地域放行,异地节点直接超时。这类问题在本地浏览器里往往看不出来,因为你自己那条解析路径可能是正常的。

证书与协议层

证书过期、证书链不完整、只有 www 配了证书而裸域没有、HTTP 与 HTTPS 混用,都会把入口变成一连串跳转。抓取路径被拉长,稳定性也跟着下降。证书问题有个特点:页面在部分浏览器里能打开,用户几乎无感,但抓取端的失败率可能已经很高。

访问控制层

  • robots.txt 里误写了 Disallow,把整段目录挡在外面;
  • WAF 或安全插件把搜索蜘蛛的 UA 当作恶意爬虫直接拦截;
  • 需要登录、验证码或人机校验才能访问的页面;
  • 按 IP 限流,短时间多次请求后返回 403、429;
  • 地域封锁,只对部分地区开放访问。

这些策略本身是为了防攻击,但误伤概率并不低。判断方法很直接:在服务器日志里筛出蜘蛛 UA 的请求,看返回码是 200,还是成片的 403、429、503。

排查顺序:从外到内

  1. 用命令行工具直接请求入口 URL,记录状态码和完整跳转链,不要依赖本地缓存;
  2. 检查 robots.txt 是否存在误伤的 Disallow 规则,以及是否误指向了测试环境;
  3. 翻一遍 CDN 与 WAF 规则,确认没有把爬虫类 UA 或高频访问整体拦截;
  4. 对照服务器日志,比较蜘蛛请求与普通用户请求的返回码差异;
  5. 确认证书覆盖的主机名与跳转目标一致,避免跳到一个没有证书的域名上。

让入口长期可用的几个习惯

  • 给证书设置到期提醒,别等到过期当天才发现;
  • 改版、换服务器、切换 CDN 前后,各测一次核心入口的可达性;
  • 对 403、429、503 这类状态码单独做监控,而不是只看整体可用率;
  • 保留一份结构清晰的 Sitemap,作为入口出现异常时的备用通道;
  • 变更防火墙或限流规则时,顺手确认一下蜘蛛的抓取是否受影响。
URL 发现的难点,往往不在“有没有写链接”,而在链接走到门口时,门是不是开着的。