Chrome CDP 代理认证:同时处理两类 Fetch 事件路径
在导航前启用认证请求,放行普通的暂停请求,并且只对目标 Proxy 质询作出响应,同时采用有次数上限的重试策略。
在相关的 CDP 会话上,先于导航注册处理器,然后用以下参数调用 Fetch.enable:
{"handleAuthRequests": true}| 事件 | 所需的响应路径 |
|---|---|
| Fetch.requestPaused | 当普通请求应继续时,用该 requestId 调用 continueRequest |
| Fetch.authRequired | 检查 authChallenge,然后用认证事件的 requestId 调用 continueWithAuth |
对于已识别的中间代理,认证参数如下:
{
"requestId": "REQUEST_ID_FROM_AUTH_EVENT",
"authChallengeResponse": {
"response": "ProvideCredentials",
"username": "PROXY_USERNAME",
"password": "PROXY_PASSWORD"
}
}在从凭据来源读取账号之前,先确认 authChallenge.source 为 Proxy,且其来源正是目标质询方。Server 质询则遵循 另一套认证策略.
按被拦截的请求记录允许的尝试次数;被反复拒绝的质询应返回 CancelAuth,而不是再次无限提交。请求完成或会话关闭时清除记录。
如果页面卡住,也要检查未处理的 requestPaused 事件。认证处理不会自动放行它们,而且两条事件路径都不会替你选择浏览器的代理路由。