简而言之:当你的浏览器能正常加载某个URL,而你的爬虫却收到403错误时,通常是HTTP头部导致的。本指南将说明反机器人系统实际会检查哪些头部,如何通过开发者工具捕获真实浏览器的头部集,如何在Python和Node.js中正确发送并轮换这些头部,以及在何种情况下手动调整不再奏效,转而使用托管爬虫API才是更明智的选择。
大多数被拦截的爬虫并非因 IP 地址被封,而是因为在请求主体发送之前,其发送的请求本身就被拦截了。在 HTTP 头信息处理中,网络爬虫的工作就是让客户端的元数据看起来像真实浏览器而非默认的 Python 或 Node.js 库,这是对抗反机器人检测最经济且最被低估的手段。
在 HTTP 中,头部(header)是由冒号分隔的名称-值对,承载着关于请求或响应的元数据:客户端身份、支持的语言、编码、Cookie、安全上下文等。 MDN 关于 HTTP 头部的参考文档和 RFC 9110 定义了标准语义。检测系统会将您的爬虫头部集与真实 Chrome 或 Firefox 会话的指纹进行比对,任何在值、存在性、大小写或顺序上的不匹配都可能导致请求被标记。
本指南面向后端、数据和运维工程师,其爬虫返回 403、429 状态码、空请求体,或显示与浏览器所见不同的页面。阅读完本指南,您将了解哪些标头至关重要,如何通过开发者工具读取标头并在 Python 或 Node.js 中重现,如何处理标头顺序和 TLS 指纹,以及何时停止调优并将请求层交由托管服务处理。




