常见問题

搜尋蜘蛛只訪問入口頁、没抓目标 URL,该從哪里開始排查?

入口頁日誌里能看到搜尋蜘蛛,却迟迟不见目标 URL 被抓,是很多站点运营者常遇到的問题。本文把入口頁日誌和目标站日誌分開對比,梳理連結不在源碼里、nofollow、robots 屏蔽、防火墙拦截、CDN 舊缓存和調度延迟這几類常见原因,並给出一條從確認狀態碼到源碼检查、再到放行規則核對的排查顺序,帮你判断是鏈路断了還是只是時間没到。

常见問题

搜尋蜘蛛只訪問入口頁、没抓目标 URL,该從哪里開始排查?

做蜘蛛池和 URL 發現的人,经常盯着日誌看。最常见的困惑是:入口頁的訪問日誌里明明出現了搜尋蜘蛛的 UA,也返回了 200,但目标站那邊始终没有對應的抓取记錄。這種情况不一定是"蜘蛛池没用",多數时候是某一個环节把鏈路断掉了。下面按排查顺序拆開说。

先区分三份日誌

在排查之前,先確認你看的是哪一份日誌,否則很容易得出错誤结论。

  • 入口頁服務器日誌:能看到蜘蛛是否来過、抓的是哪個 URL、返回什么狀態碼。
  • 目标站服務器日誌:能看到蜘蛛是否真的請求了目标 URL、返回什么狀態碼。
  • 抓取频率的間接證據:比如入口頁日誌里蜘蛛的訪問間隔、抓取條數、是否反复回訪。

只有入口頁日誌、没有目标站日誌,說明蜘蛛来過但没顺着連結走;两份日誌都有,只是時間差几小时到几天,那属于正常的調度延迟,不算問题。

蜘蛛来了却没抓目标 URL 的常见原因

1. 連結不在初始 HTML 里

如果目标連結是前端 JS 渲染後才出現的,蜘蛛拿到的原始 HTML 里可能根本没有這個 URL。判断方法很简單:用 curl 或者關閉 JS 的浏览器抓一次入口頁源碼,搜尋目标域名。源碼里搜不到,就別指望蜘蛛能發現。

2. 入口頁本身抓取频率极低

新入口頁、權重低的域名、被判定為低质量的頁面,蜘蛛可能只抓一次首頁就再不来了。只抓一次的时候,它倾向于抽取頁面里少量連結,未必會覆盖全部目标 URL。

3. 目标 URL 被某種規則挡住

  • 連結带 rel="nofollow":蜘蛛可能不抓,或者抓了也不传递任何信号。
  • 目标站自己的 robots.txt 屏蔽了對應目錄或參數。
  • 目标站防火墙對蜘蛛 UA 或 IP 做了拦截,請求被 403/503 挡回,日誌里可能看不到完整记錄。
  • 連結经過 301/302 鏈,中間某一跳被拦截或跳到了不允许抓取的地址。

4. 入口頁返回狀態有問题

入口頁返回 200 但内容為空,或者 CDN 缓存了舊版本,蜘蛛看到的就是舊頁面。新加進去的目标連結自然不會被抓。

5. 就是調度延迟

URL 被發現和真正抓取之間隔几天很常见。特別是目标站响應慢、站点整体抓取预算有限时,蜘蛛會把新發現的 URL 排進队列慢慢抓。

建议的排查顺序

  1. 確認入口頁返回 200,且缓存已刷新到最新版本。
  2. 用 curl 抓源碼,確認目标 URL 确實出現在 HTML 里。
  3. 检查連結是否带 nofollow、是否被 JS 改寫或隐藏。
  4. 检查目标站 robots.txt 和防火墙是否放行蜘蛛。
  5. 對比入口頁日誌和目标站日誌的時間戳,判断是不是延迟。
  6. 如果以上都正常,观察一到两周,別急着改结构。

几個容易被誤判的情况

蜘蛛抓了入口頁却没抓目标 URL,就說明蜘蛛池無效?不一定。發現和抓取是两步,入口頁被频繁抓取本身就說明鏈路存在,只是還没轮到目标 URL。

日誌里看不到蜘蛛,就是被屏蔽了?也可能是日誌采样、CDN 不回源,或者蜘蛛使用压缩請求導致日誌格式不同。

把入口頁当成"連結的存放處",而不是"抓取加速器",很多预期落差會小很多。蜘蛛池能影响的是 URL 被看到的机會,不是抓取和收錄的结果。

小结

蜘蛛訪問入口頁、没抓目标 URL,最常见的原因依次是:連結不在源碼里、入口頁本身抓取频率低、目标 URL 被規則挡住,以及正常的調度延迟。按上面的顺序逐條排除,比反复調整入口頁结构更有效。也別忘了,URL 被發現只是第一步,能不能被收錄,還要看目标頁自身的内容质量。