如何判断错误来自 Web Unlocker 还是目标网站?
每个 Web Unlocker 错误都带有描述失败原因的x-brd-error 响应头。大多数错误还带有机器可读的错误代码:unlocker 层错误使用 x-brd-error-code,透传的代理层错误使用 x-brd-err-code。如果响应中没有 x-brd-error,则该响应来自目标网站本身,包括目标网站自己的错误页面和 4xx/5xx 状态码,这些内容会原样传递给您。
请基于错误代码(而不是错误消息文本)编写分支逻辑,因为消息中包含选择器、主机名、超时时间等与具体请求相关的细节。
错误在两种接入模式下分别出现在哪里?
两种接入模式返回相同的错误代码,区别在于 HTTP 状态码所在的位置:
在原生代理模式下,国家和会话选项从 JSON body 参数改为用户名标志(例如
-country-us),但产生的错误代码相同。
同一失败在 Direct API 下的响应:
Direct API 响应
原生代理响应
哪些响应头携带错误代码?
按层级分为两组错误响应头:
两组响应头在两种接入模式下都可能出现。状态码为
400、403 或 407 的响应还带有 RFC9209 Proxy-Status 响应头,其 details 字段会重复代理层代码(例如 details="policy_20020: Bad Port used...")。下文列出的 502 解锁失败不携带该响应头。
哪些错误可以通过重试解决?
由 peer 或解锁尝试本身导致的错误值得重试,因为每次请求使用不同的 peer。由目标网站自身属性或您的请求参数导致的错误,每次尝试都会返回相同结果。错误目录
HTTP 错误 400
400 表示请求在解锁尝试开始前就被拒绝,原因是 zone 配置或请求本身不允许该请求。这类响应不包含x-brd-debug 响应头。
premium
feature_not_active
ub_bad_endpoint_robots
请求校验(仅 Direct API,真实外层 400)
HTTP 错误 401(仅 Direct API)
API key 认证发生在请求到达 unlocker 之前,因此这类错误返回真实的外层 401,带有纯文本 body,不包含x-brd-* 响应头。
HTTP 错误 403
访问受 Bright Data 政策限制。这类错误大多在x-brd-err-code 中携带代理层代码,详见代理错误目录。
HTTP 错误 407
代理层认证失败。在原生代理下,407 是外层状态码,状态原因短语中带有摘要信息。在 Direct API 下,同样的407 出现在 x-brd-status-code 中。
HTTP 错误 429
sr_rate_limit
HTTP 错误 502
502 表示解锁尝试本身失败,原因在x-brd-error-code 中。
reject_block
resolve_failed_*
http_status
expect_element
navigation_timeout
domcontentloaded_event_timeout
document_load_failed
net_err_cert_date_invalid
net_err_cert_common_name_invalid
net_err_cert_authority_invalid
net_err_closed
rate_limit
proxy_error
no_peers
HTTP 错误 503
服务不可用。浏览器检查失败或未完成。目标网站自身返回的 503 会原样交付,不带x-brd-error 响应头。