蜘蛛要抓一個頁面,第一步並不是讀 HTML,而是把域名解析成 IP、建立连接、完成加密握手,然後才拿到源站或 CDN 返回的内容。這几步里任何一环出問题,外在對表現往往都一样:抓取失敗或者超时。内容层面的自查做過很多,但基础设施這一层如果平时不看,出問题时就容易從一個栏目一路查到服務器,花掉不少時間。
域名解析:能解析不等于解析稳定
解析正常是常態,所以大家很少主動检查它,直到某次改完记錄,發現部分地区的請求落到了舊地址上。可以按下面几項過一遍:
- 记錄是否齐全:主域名和 www 是否都指向了正确位置,別只解析其中一個,另一個靠跳轉兜底。
- TTL 設定:計划改解析之前,先把 TTL 調小,等舊记錄過期再切換,减少切換期間請求分散到两個地址的情况。
- 多 IP 與多线路:如果配了多條 A 记錄,逐一確認每個地址都能正常响應,別让蜘蛛随机分到一個已经下线的节点。
- 變更後的观察:改完至少观察一個 TTL 周期,確認各地解析结果趋于一致,再去看抓取資料是否恢复。
證书:有效期、鏈完整與域名覆盖
證书問题的特点是来得突然。到期当天之前一切正常,過期之後所有請求直接失敗。與其等提醒,不如把它当成一個固定條目:
- 记錄每張證书的到期時間,提前留出更換和生效的缓冲期。
- 检查證书鏈是否完整,中間證书缺失时,部分客戶端會直接拒绝连接。
- 確認域名覆盖范围,带 www 與不带 www、常用子域名是否都在證书里。
- 確認從 HTTP 到 HTTPS 的跳轉只有一跳,不要出現跳轉之後再跳轉。
CDN 與回源:节点之間可能不一样
用 CDN 的好處是就近响應,麻烦也在這里——不同节点拿到的结果可能並不一致。自查时可以關注三件事:回源是否正常、缓存命中是否稳定、有没有個別节点返回 5xx 而其他节点正常。
遇到「自己這邊能打開、蜘蛛那邊抓不到」的情况,先別急着改頁面,可以換個地点、換個網絡多测几次同一個 URL,把节点差异先排除掉。
源站時間與时区
服務器時間不准,會连带影响几件事:Last-Modified 的判断、日誌時間的排序、以及部分證书校驗逻辑。日誌時間错乱时,按小时統計抓取量就會失真,看到的高峰可能是假的。建议保持系統時間同步,並统一时区,分析日誌时心里有數。
可以固定下来的巡检节奏
- 每周:抽查首頁和几個主要栏目頁的响應時間與狀態碼,顺手確認 HTTPS 是否正常。
- 每月:確認證书剩余天數、DNS 记錄有没有被意外改動、CDN 配置是否被同事調整過。
- 變更前後:任何解析、證书、CDN 配置的改動,都先记錄變更時間和内容,再观察一到两天的抓取資料,確認没有異常波動。
基础设施的問题,很多时候不是「抓不到」,而是「偶尔抓不到」。偶發的問题最难發現,也最值得用固定节奏去覆盖。
這一层不需要多复杂的工具,把關键节点、检查項和變更记錄固定下来就够了。等到抓取資料出現異常时,你至少有一條清晰的线索可以顺着查下去。