【问题标题】:HTTP proxy error status codesHTTP 代理错误状态代码
【发布时间】:2018-03-25 14:22:39
【问题描述】:

该应用程序是基于 Node.js 的网络爬虫,它通过 request 库向远程服务器发出请求。

请求是通过第三方供应商提供的具有 99% 及更高正常运行时间的经过身份验证的 HTTP 代理服务器发出的。

我正在尝试处理可能由代理故障引起的请求错误响应的 HTTP 代码。预计在达到这些 HTTP 代码的阈值后,将触发代理不可靠的标志,因此代理将排队等待诊断。而且我希望一些代码有更多的权重。

目前我正在处理代理的 407(代理身份验证)和 408(请求超时)HTTP 代码。

是否还有其他通常由 HTTP 代理故障引起的 HTTP 代码?

我希望这个问题足够具体。我假设可能的故障(以及一组可能的 HTTP 错误状态代码)取决于实际的代理及其环境。我们应该考虑这些代理黑盒,因为它们是由第三方提供的。

问题不是一般的 HTTP 状态代码,只有错误代码可能是由故障代理(转发代理)引起的。

【问题讨论】:

标签: node.js web-crawler http-status-codes http-proxy node-request


【解决方案1】:

根据HAProxy docs(最流行的代理解决方案之一)

Haproxy 可能自行发出以下状态代码

  • 200 访问统计页面,以及在回复监控请求时
  • 执行重定向时301,取决于配置的代码
  • 执行重定向时的302,取决于配置的代码
  • 执行重定向时303,取决于配置的代码
  • 执行重定向时为307,取决于配置的代码
  • 执行重定向时为308,取决于配置的代码
  • 400 无效或太大的请求
  • 401 需要身份验证才能执行操作(当 访问统计页面)
  • 请求被“block”ACL 或“reqdeny”过滤器禁止时为 403

  • 408 当请求超时在请求之前触发 完成了

  • 500 当 haproxy 遇到不可恢复的内部错误时,例如 内存分配失败,这不应该发生
  • 502 当服务器返回空的、无效的或不完整的响应时,或者当“rspdeny”过滤器阻止响应时。
  • 503 当没有服务器可用于处理请求,或响应与“监视器失败”匹配的监视请求时 条件
  • 504 在服务器响应之前响应超时发生

【讨论】:

    【解决方案2】:

    “由代理引起”我基本上可以理解所有内容,包括名称中的“网关”一词。

    这里的技巧是非标准的 HTTP 错误代码,由提供者专门实施/发明。

    【讨论】:

      猜你喜欢
      • 2013-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 2012-09-17
      • 2012-11-14
      • 1970-01-01
      相关资源
      最近更新 更多