什么是 HTTP 状态码?

HTTP 状态码是由 Web 服务器发送的由三位数字组成的响应,用于指示客户端请求的结果。它有助于浏览器和开发人员了解请求是成功、失败还是需要进一步操作。

每当客户端(如浏览器、API 或代理)向 Web 服务器发送请求时,服务器都会返回一个状态码,以说明其如何处理该请求。

这些代码根据其首位数字被分为五大类:

  • 1xx — 信息类: 已收到该请求,目前正在处理中。
  • 2xx — 成功: 该请求已成功接收、理解并接受。
  • 3xx — 重定向: 客户端必须采取进一步操作才能完成该请求。
  • 4xx — 客户端错误: 该请求包含语法错误或无法处理。
  • 5xx — 服务器错误: 服务器无法处理一个有效的请求。

对于代理用户而言,这些代码能提供关键信息,帮助判断连接问题是源于代理、目标网站,还是两者之间的网络。

1xx – 信息类

状态码定义下一步
100 继续已收到请求的开头部分,客户端应继续发送请求。继续发送请求。
101 交换协议服务器正在根据客户端的要求切换到另一种协议。确保客户端能够处理新协议。
102 处理中服务器已收到请求并正在处理中,但尚未收到响应。请等待服务器完成处理。
103 个早期提示提供有关该请求的初步信息,通常用于优化加载过程。利用这些提示来提升性能或用户体验。

2xx - 成功

状态码定义下一步
200 OK请求成功,服务器返回了所请求的资源。无需采取任何操作;请求已成功。
201 已创建该请求已处理完毕,并创建了一个新资源。无需采取进一步操作;已创建新资源。
202 已接受该请求已接受处理,但处理尚未完成。请等待处理完成;如有必要,请检查是否有更新。
203 非权威信息请求成功,但返回的元数据可能并非来自原始服务器。检查返回的数据,确保其符合要求。
204 无内容请求成功,但响应中未返回任何内容。无需操作;请求已成功,但无内容可显示。
205 重置内容请求成功,客户端应刷新视图。将文档视图或表单重置为原始状态。
206 部分内容服务器返回了所请求资源的部分内容,这通常是由于范围标头所致。根据需要继续请求更多内容;验证接收到的数据。

3xx – 重定向

状态码定义下一步
300道选择题该请求有多种可能的响应。用户或客户端应从中选择一种。请从给定的选项中选择一个,或修改请求以使其更具体。
301 永久重定向所请求的资源已移至新网址,今后所有请求均应使用新网址。请更新书签或引用,以使用新的网址。
302 已找到所请求的资源暂时位于另一个 URL 下,但客户端在今后的请求中应继续使用原始 URL。请访问该临时网址,但后续请求仍请继续使用原始网址。
303 查看更多使用 GET 方法,可以在另一个 URL 下找到该请求的响应。向给定的 URL 发送 GET 请求以获取资源。
304 未修改该资源自上次请求以来未被修改,客户端可以使用缓存版本。使用该资源的缓存版本。
305 使用代理必须通过响应中指定的代理访问所请求的资源。使用指定的代理服务器重新发送请求。
307 临时重定向所请求的资源暂时位于另一个 URL 下,客户端应通过该 URL 处理此请求。请使用此请求的临时 URL,但后续请求请使用原始 URL。
308 永久重定向所请求的资源已永久移至新网址,今后所有请求均应使用新网址。更新所有引用,使其使用新网址。

4xx – 客户端错误

状态码定义下一步
400 请求错误由于客户端错误(例如请求语法错误),服务器无法处理该请求。请检查请求语法和参数,然后重试。
401 未授权访问所请求的资源需要进行身份验证。请提供有效的身份验证凭据,然后重试。
402 需付款保留供将来使用;通常表示访问该资源需要付费。如适用,请完成支付流程。
403 禁止访问服务器理解该请求,但拒绝对其进行授权。请确保您拥有访问该资源所需的权限。
404 未找到服务器无法找到所请求的资源。请检查 URL 是否存在错误,或尝试搜索该资源。
405 方法不允许所请求的资源不支持此请求方法。检查是否使用了正确的 HTTP 方法(GET、POST 等)。
406 不可接受服务器无法生成符合客户端 Accept 头要求的响应。调整请求头,以接受有效的响应格式。
407 需要代理身份验证客户端必须先通过代理进行身份验证。请提供有效的代理认证凭据。
408 请求超时服务器在等待请求时超时了。请重新发送请求,并确保在服务器允许的时间范围内发送。
409 冲突由于与资源的当前状态发生冲突,无法处理此请求。请先解决冲突,然后再重试该请求。
410 已删除所请求的资源已不可用,且将不再提供。由于该资源已被永久删除,请移除或更新对其的引用。
需填写411位数字服务器要求请求中必须包含 Content-Length 头字段。请在请求中包含 Content-Length 头,然后重试。
412 先决条件未满足服务器不符合请求头中指定的某个先决条件。检查请求头中的先决条件,并根据需要进行调整。
413 有效载荷过大请求实体的大小超出了服务器愿意或能够处理的范围。请缩小请求负载的大小,然后重试。
414 URI 过长客户端请求的 URI 长度超出了服务器可解析的范围。缩短 URI 或降低请求的复杂度。
415 媒体类型不受支持服务器不支持所请求数据的媒体格式。请在请求中使用受支持的媒体格式。
416 范围无法满足服务器无法满足 Range 头中指定的范围要求。修改范围请求,或尝试访问完整资源。
417 预期失败服务器无法满足 Expect 请求头字段的要求。请删除“Expect”标头或调整其值,然后重试。
429 请求过多该用户在指定时间内从同一IP地址发送了过多的请求(“速率限制”)。请稍等片刻后再试;建议降低请求频率,或通过使用住宅代理将请求分散到多个IP地址上。

5xx – 服务器错误

状态码定义下一步
500 内部服务器错误服务器遇到意外情况,无法处理此请求。检查服务器日志中的错误,并修复导致该问题的任何问题。
501 未实现服务器不支持处理此请求所需的功能。确保服务器软件能够处理该请求;考虑更新或更换服务器。
502 网关错误服务器在充当网关或代理时,从上游服务器收到了无效的响应。检查上游服务器和网络连接;解决任何问题。
503 服务不可用服务器目前无法处理此请求,通常是由于临时负载过重或正在进行维护所致。请稍后再试;请查看服务器负载或维护状态。
504 网关超时该服务器在充当网关或代理时,未从上游服务器收到及时的响应。检查上游服务器和网络连接;确保超时设置正确。
505 不支持该 HTTP 版本服务器不支持请求中使用的 HTTP 协议版本。请使用受支持的 HTTP 版本或更新服务器软件。
506 变体也支持协商服务器存在内部配置错误,导致循环引用。修正服务器配置以解决循环引用问题。
507 存储空间不足服务器无法存储完成该请求所需的表示形式。释放服务器上的磁盘空间或增加存储容量。
检测到508个循环服务器在处理请求时检测到一个无限循环。调查并修复服务器配置或代码中的循环问题。
510 未扩展需要对该请求进行进一步扩展,服务器才能处理该请求。确保客户端请求包含必要的扩展名。
511 需要网络认证客户端需要通过身份验证才能访问网络。请提供有效的网络身份验证凭据。

使用场景

监控代理连接

在使用用于数据收集的代理 在 Web 自动化中,状态码能揭示请求在何处失败——是代理、目标服务器还是网络。例如,403 错误通常表示 IP 被封锁,而 407 则表示代理身份验证 失败了。

优化网页抓取

爬虫会利用状态码来动态调整行为。A429 请求过多 会触发自动限速或代理轮换,从而帮助保持对目标网站的访问。

最佳实践

记录并分类状态代码

在……期间,请务必记录状态码刮取 或 API 操作。识别模式(例如 403 或 429 错误的激增)有助于微调代理设置和用户代理。

使用重试逻辑和轮询机制

实现重试功能,并IP轮换 针对临时性的 5xx 或 429 响应。这有助于提高系统正常运行时间,并降低被封禁的风险。

监测响应趋势

针对异常的错误率设置警报,以便尽早发现问题——例如代理凭据过期或目标网站发生变更。

结论

HTTP状态码是客户端与服务器之间的通信桥梁,用于指示请求是成功、失败还是需要调整。对于依赖代理的团队而言,了解这些状态码有助于更快地定位和解决问题,从而提高连接的可靠性和数据的准确性。

常见问题解答

它们描述了服务器如何响应客户端的请求——无论是成功、失败,还是需要进一步操作。

它们有助于确定问题是源于代理服务器、目标网站还是客户端配置。

4xx 错误表示客户端问题(例如,请求错误或未经授权的访问),而 5xx 错误表示服务器端故障。

在许多情况下,确实如此。轮换 IP 地址、使用家庭代理或进行正确的身份验证,通常可以解决 4xx 和 5xx 错误。