我在使用chrome扩展的代理身份验证中遇到了问题(由于v3的问题,我的代码基于manifest v2)。连接使用以下curl
命令工作:curl -v -x https://11.111.11.111:222 https://www.google.com/ --proxy-header "proxy-authorization: Basic abc" --proxy-insecure
我试着在扩展中实现它。以下是background.js
文件中的内容:
chrome.runtime.onStartup.addListener(() => {
const config = {
mode: 'fixed_servers',
rules: {
singleProxy: {
host: '11.111.11.111',
port: 222,
scheme: 'https',
},
},
}
chrome.proxy.settings.set({ value: config, scope: 'regular' })
})
chrome.webRequest.onBeforeSendHeaders.addListener(
(details) => {
const requestHeaders = details.requestHeaders || []
requestHeaders.push({
name: 'proxy-authorization',
value: 'Basic abc',
})
return { requestHeaders }
},
{ urls: ['<all_urls>'] },
['blocking', 'requestHeaders', 'extraHeaders']
)
chrome.webRequest.onSendHeaders.addListener(
(details) => {
console.log('sending', details)
return details
},
{ urls: ['<all_urls>'] },
['requestHeaders', 'extraHeaders']
)
我在manifest.json
中拥有以下权限:
"permissions": [
"cookies",
"storage",
"tabs",
"activeTab",
"proxy",
"webRequest",
"webRequestBlocking",
"<all_urls>"
]
以下是onSendHeaders
函数中打印的标题:
您可以看到存在proxy-authorization
头。但我得到ERR_PROXY_CERTIFICATE_INVALID
,而试图浏览任何页面。是否应该以不同的方式设置代理标头?因为我在curl命令中使用了--proxy-header
标志,而不是--header
。
PS.我尝试使用多次提到的方法:
chrome.webRequest.onAuthRequired.addListener(function(details, callbackFn) {
callbackFn({
authCredentials: { username: username, password: password }
});
},{urls: ["<all_urls>"]},['asyncBlocking']);
但是这个函数从来没有被调用过(我把console.log放在里面)。
2条答案
按热度按时间wswtfjt71#
你解决这个问题了吗?
如果没有,试试这个:
主要变化-AsyncBlocking=>Blocking
pftdvrlh2#
解决方案是在
manifest.json
中添加manifest v3:background.js
:这对我很有效。希望这能帮上忙。