很多人在搭建蜘蛛池时,把注意力放在 HTML 内容、連結布局和 URL 结构上,却忽略了服務器返回的 HTTP 响應头。對搜尋蜘蛛来说,响應头是它拿到頁面後最先解析的信息之一。响應头配置不当,轻則让頁面解析出問题,重則让蜘蛛放弃抓取或長期拿到舊版本。
Content-Type 與字符集:別让蜘蛛猜
Content-Type 告诉蜘蛛返回的资源是什么類型。入口頁通常是 HTML,正确寫法應包含 text/html 和字符集,例如 text/html; charset=utf-8。如果服務器返回 application/octet-stream 或缺失 Content-Type,蜘蛛可能把頁面当成未知文件處理。
- 返回類型要與實际内容一致,HTML 頁面不要返回 text/plain 或图片類型。
- 字符集声明要和頁面實际编碼一致,避免中文乱碼。
- 同一批入口頁尽量使用统一模板,减少逐個排查成本。
字符集不一致时,蜘蛛可能讀到乱碼标题和乱碼正文,頁面即使能訪問,也很难被正常理解。
X-Robots-Tag:比 meta 更靠前的指令
X-Robots-Tag 是寫在响應头里的 robots 指令,優先級和覆盖范围與 HTML 里的 meta robots 不同。它不依赖頁面正文是否能被解析,蜘蛛拿到响應头就能看到。因此,入口頁如果被誤加了 noindex 或 nofollow,蜘蛛可能直接放弃索引或不再跟随連結。
- 需要放行时,不要全局添加 X-Robots-Tag: noindex。
- 只想限制某類文件时,用路径或文件類型精确控制,避免影响 HTML 入口頁。
- 如果同时使用 meta robots 和 X-Robots-Tag,要注意指令冲突时的取舍。
排查入口頁是否被誤屏蔽时,先看响應头,再看 HTML 内的 meta,顺序不要反。
缓存控制:蜘蛛也會看缓存头
Cache-Control、Expires、ETag 和 Last-Modified 會影响蜘蛛再次訪問时拿到的是新内容還是缓存副本。入口頁更新频率不高时,适当缓存可以降低服務器压力;但缓存時間過長,蜘蛛可能長時間看不到頁面變化。
- Cache-Control 的 max-age 不要設定得過長,尤其入口頁需要定期微調时。
- ETag 和 Last-Modified 可以帮助蜘蛛判断内容是否變化,配置得当能减少重复传輸。
- Vary 头如果按 User-Agent 区分缓存,可能让蜘蛛和普通用戶拿到不同版本,需要谨慎。
有些服務器預設開啟强缓存,入口頁改動後蜘蛛仍返回 304 或舊内容。遇到“改了但没反應”的情况,可以先用不同 UA 或直接绕過缓存請求一次,確認源站輸出。
常见誤区與排查
- 只看 HTML 不看响應头,结果頁面被全局 noindex 覆盖。
- Content-Type 缺失或错誤,蜘蛛解析異常。
- 字符集與頁面编碼不一致,中文内容乱碼。
- 缓存头過長,蜘蛛長期抓不到更新。
- 重定向头配置混乱,入口頁反复跳轉。
排查时可以用 curl -I 或浏览器開發者工具查看响應头,重点確認狀態碼、Content-Type、X-Robots-Tag、Cache-Control 和 Location。多個入口域名最好抽查同一套模板,避免個別服務器配置不一致。
配置建议
- 入口頁统一返回 text/html; charset=utf-8,减少解析歧义。
- X-Robots-Tag 只在该用的地方用,不要图省事全局添加。
- 缓存策略與入口頁更新节奏匹配,改動频繁就缩短缓存時間。
- 把响應头检查纳入日常巡检,和狀態碼、内容可用性一起看。
HTTP 响應头不是蜘蛛池的核心秘密,但它属于基础配置。把這一层做稳,入口頁被正确讀取和更新的概率會更高,後續的内容和連結策略才有發挥空間。