做蜘蛛池投放时,一個常被忽略的問题是:入口頁本身被 CDN、WAF、人机驗證或訪問频率限制挡住,搜尋蜘蛛根本没拿到頁面。表面上看投放還在跑,實际抓取請求被挡在门外。
先分清:挡的是訪客還是蜘蛛
安全防護大多按两套逻辑工作:一套按請求特征(User-Agent、爬虫 IP 段、反向 DNS),一套按訪問行為(频率、来源、Cookie、是否执行 JS)。前者能精确放行搜尋蜘蛛,後者往往一视同仁,连蜘蛛一起拦。
- 按 UA 拦截:放行規則寫對了影响不大,寫错了整段被挡。
- 按频率拦截:蜘蛛短時間内集中抓取入口頁,很可能触發限流,返回 429 或 503。
- 人机驗證:返回驗證頁或 JS 挑战,能执行脚本的蜘蛛可能通過,不能执行的直接拿不到内容。
常见的拦截表現
- 403:規則直接拒绝,蜘蛛记下這次失敗。
- 429 / 503:多為限流或防護触發,短期可恢复,频繁出現會降低抓取意愿。
- 200 但内容是驗證頁:最隐蔽的一種,蜘蛛拿到的是「請稍候」頁面,入口頁的連結自然也就没了。
- 回源失敗:CDN 节点缓存了错誤狀態,蜘蛛看到的一直是舊结果。
怎么判断是不是被拦了
- 看服務器和 CDN 的回源日誌,按狀態碼過滤,確認搜尋蜘蛛請求的返回情况。
- 用站長平台提供的抓取诊断或抓取測試功能,走一遍真實抓取鏈路。
- 對比「蜘蛛 UA 訪問」和「普通浏览器訪問」的结果,差异明顯就說明規則在起作用。
- 注意 UA 可以伪造,單看 UA 容易誤判,尽量结合請求来源和日誌里的 IP 段判断。
處理思路
- 優先按官方公布的爬虫 IP 段或反向 DNS 做白名單,而不是只放行 UA 字符串。
- 把入口頁從人机驗證、滑块、JS 挑战的覆盖范围里排除。
- 如果确實要限流,给搜尋蜘蛛單獨放宽阈值,或者把入口頁做成静態頁面绕過動態防護。
- 確認 CDN 回源正常,必要时刷新缓存,避免舊狀態碼一直對外。
- 如果這個域名或路径的防護策略改不動,換一個可公開訪問的頁面做入口,比硬扛更省事。
防護的目的不是拦蜘蛛,而是拦異常流量。把搜尋蜘蛛当成正常訪客放行,入口頁才有可能被正常抓取。
几個容易踩的坑
- 只放行了 UA,没放行 IP 段,结果真實抓取仍被挡。
- 入口頁返回 200,但正文是驗證内容或跳轉脚本,蜘蛛等于没看到連結。
- 防護規則開了以後没复查,抓取量掉了還在找別的原因。
- 把目标 URL 也一起上了强防護,即使入口頁通過,後續抓取仍會被拦。
一句话總结:投放鏈路里,入口頁必须能被無障碍地拿到 200 狀態和完整 HTML。防護策略可以先在目标頁或业務层做,但不要卡在發現鏈路的入口上。