常见問题

入口頁被 WAF 或 CDN 拦截:搜尋蜘蛛還能發現里面的目标連結吗

入口頁迟迟不被收錄、日誌里也见不到搜尋蜘蛛,很多时候不是連結结构的問题,而是請求在到達服務器前就被 WAF、CDN 或主机商的防爬規則拦下了。本文說明如何区分 robots 屏蔽、服務器拒绝和拦截規則,怎么核對拦截原因,以及放行後要按什么顺序恢复抓取。

常见問题

入口頁被 WAF 或 CDN 拦截:搜尋蜘蛛還能發現里面的目标連結吗

蜘蛛池跑了一段時間,入口頁却迟迟没有收錄,服務器日誌上也几乎见不到搜尋蜘蛛的訪問记錄。這種情况未必是連結结构或内容质量的問题,很可能入口頁在到達服務器之前,就被 WAF、CDN 或主机商的防爬規則拦住了。蜘蛛连頁面都没拿到,里面的目标連結自然無從谈起。

先分清三種“看不到蜘蛛”的原因

同样是日誌里没有蜘蛛,背後的机制完全不同,處理方式也不一样:

  • robots.txt 屏蔽:蜘蛛會遵守規則,通常表現為不抓或抓了不索引,日誌里可能仍有請求。
  • 服務器直接拒绝:例如 401、403、503,蜘蛛来了但拿不到内容。
  • WAF、CDN 或主机商防爬規則:請求在邊缘节点就被拦下,狀態碼常见 403、405、429、503,服務器源站日誌里甚至看不到這條請求。

第三種最容易被忽略,因為你在源站日誌里排查了半天,實际拦截發生在更前面的一层。

入口頁被拦下後,里面的連結會怎样

  • 還没被發現的目标 URL 會一直停在“未發現”狀態,没有任何办法绕過抓取這一關。
  • 曾经被發現過的目标 URL 不會因為入口頁被拦就马上消失,但長期抓不到新的入口頁,抓取優先級會逐步下降。
  • 如果拦的是整站或整段 IP,蜘蛛的抓取频次會明顯降低,恢复之後需要時間重新爬回来。
  • 已经提交的 sitemap 只是声明,不能代替真實抓取,被拦时同样無效。

怎么確認是防爬規則在拦

  1. 在 CDN 或 WAF 後台查看拦截日誌,確認拦截原因、命中的規則名、請求 UA 和来源 IP。
  2. 在源站日誌里筛 403、429、503 這類狀態碼,以及带搜尋引擎 UA 的請求路径。
  3. 用官方抓取測試工具(例如站点管理員後台的網址检查、抓取測試功能)發起一次實时抓取,看返回碼和實际抓到的 HTML。
  4. 用官方公布的蜘蛛 IP 段做反向解析核對,不要只看 User-Agent 字符串。

把這几步做完,基本能确定拦截發生在哪一层。

放行时容易踩的坑

  • 只按 UA 放行:UA 可以伪造,部分規則库預設還會把可疑 UA 一並拦掉,規則容易失效。
  • 直接全站關掉 WAF:短期能通,長期是明顯的安全隐患。
  • 只放行首頁:入口頁往往是批量生成的路径,需要按路径規則或整站维度放行。
  • 放行後不限速:一下子放開全部限制,異常流量和真實蜘蛛混在一起,容易再次触發規則。
  • 漏掉 IPv6 和移動端蜘蛛的 IP 段:放行名單只寫了部分網段,抓取依舊时好时坏。

放行之後按什么顺序恢复

  1. 先小范围驗證,用無痕浏览器和抓取測試工具各訪問一次入口頁,確認返回 200 且 HTML 完整。
  2. 重新提交入口頁,或者用站内連結、sitemap 再指向它,触發一次新的抓取。
  3. 观察日誌里蜘蛛 UA 的返回碼和抓取频次,確認没有再次變成 403 或 429。
  4. 入口頁稳定被抓過几轮之後,再去看里面的目标 URL 有没有進入“已發現”“已抓取”狀態。
  5. 不要把结果当成必然:抓取恢复只是前提,最终能否收錄和展示,仍取决于目标頁自身的质量與竞争情况。
蜘蛛池解决的是 URL 被發現這一环,而前提是入口頁真的能被抓到。被拦在门外的入口頁,連結放得再多也没有意义。

實际操作中,建议把“入口頁是否被拦截”作為蜘蛛池效果排查的第一步。先確認蜘蛛拿得到頁面,再去調連結结构和入口數量,否則很容易在错誤的方向上反复折腾。