頁面内容没問题,内鏈也没断,收錄却迟迟不见動静,這时候可以把视线往前挪一层:蜘蛛到底有没有真正拿到這個頁面。CDN、WAF、防火墙、地区限制這些配置本意是保護站点,但配置得不合适,很容易把正常的抓取請求一起挡在门外。而且這種問题往往不报错,從站長後台看不出明顯異常,只有翻日誌才能發現。
先確認蜘蛛有没有進来
不要凭感觉判断,先看三處資料。第一處是服務器訪問日誌,重点看 Googlebot、Bingbot 這類 UA 的出現频率,以及它們請求时返回的狀態碼。第二處是搜尋後台的抓取統計和 URL 检查工具里的實时抓取结果,它能看到蜘蛛视角下拿到的 HTML、狀態碼和渲染情况。第三處是 CDN 侧的日誌與缓存命中记錄,有些請求在邊缘节点就被處理掉了,根本没到源站。
如果日誌里 UA 出現很多,但返回的全是 403、429、503,問题多半在防護层。如果连 UA 都看不到,那要往 DNS、防火墙規則或者 CDN 更前面的环节去找。
几種常见的“被挡住”方式
缓存返回了错誤版本
CDN 缓存了舊的 HTML、缓存了错誤的狀態碼,或者把某個訪客的登入態頁面缓存下来,蜘蛛拿到的就不是你目前的頁面。典型表現是:内容明明更新了,索引里還是舊版本;或者抓取工具看到的内容和浏览器打開的不一致。
WAF 按 UA、频率或請求特征拦截
不少防護規則預設把“不像真實用戶”的請求当可疑流量處理。抓取密集时容易触發频率限制,返回 429;UA 里带 bot 字样可能被直接拒;還有些規則會拦截没有 Cookie、没有 Referer 的請求,而蜘蛛恰好就是這样来的。
地区限制和登入墙
按 IP 归属地封禁、只對特定國家開放、或者整站需要登入才能看到内容,蜘蛛從境外抓取时就會吃到 403,或者被跳到登入頁。這類問题常常在站点做了区域性运营之後才出現,容易被忽略。
JS 挑战與人机驗證
一些防護會用一段 JS 跳轉或人机驗證来確認訪問者身份。真人点一下能過,蜘蛛一般過不去,结果就是抓到的内容停留在挑战頁,正文一個字都没取到。
怎么判断訪問者是不是真蜘蛛
不要只看 UA,UA 是可以伪造的。常用的核對方式是三步连着做:
- 反向 DNS:把来訪 IP 做反向解析,看解析出的域名是否属于對應搜尋引擎;
- 正向解析回查:把解析出来的域名再解析一次,確認指向的正是原 IP;
- 比對官方 IP 段:Google、Bing 等都會公布自己的 IP 范围,可以對照確認。
只有這几步都對得上,才按真蜘蛛處理。只看 UA 就放行,等于给伪装請求開了口子。
合理的放行做法
- 在 WAF 或 CDN 里给已驗證的蜘蛛 IP 段设白名單,而不是简單按 UA 放行;
- 對已驗證的蜘蛛關閉人机驗證和 JS 挑战;
- 检查缓存規則,确保 HTML 不會被長期缓存,或至少保證回源拿到的是最新版本;
- 把抓取频率限制放宽到不影响正常抓取的阈值;
- 如果业務上确實需要按地区限制,至少给搜尋引擎抓取留出例外。
改完之後怎么核對
調整完配置,先別急着看收錄數。用 URL 检查工具發起一次實时抓取,確認返回的 HTML、狀態碼、渲染结果都正常;再回到日誌,看蜘蛛請求的返回碼是否從 403、429 變成了 200,抓取請求數有没有恢复。搜尋後台的抓取統計里,平均响應時間也會跟着變化。
收錄本身是滞後的,抓取恢复正常之後,索引還需要一段時間才跟上。所以核對的重点應该放在“蜘蛛能不能稳定拿到正确頁面”這件事上,而不是每天盯着收錄條數的涨跌。
防護和抓取並不是二選一。合理的做法是让已驗證的蜘蛛顺利通過,同时把真正可疑的流量繼續挡住。
收錄異常的原因往往不止一個,防護层只是其中一條线索。把它放在排查顺序里靠前的位置,能省掉不少“内容明明没問题却怎么都收不進去”的困惑。