我正在开发 chrome-extension 以将 UserAgent 更改为您想要的。我使用 chrome-webrequest API,但我无法从第二次重写它......
我尝试监视请求标头。我发现网络请求从第二个请求开始增加。
我想解决这个问题。
这是我的代码。我认为这个问题的原因是chrome.webRequest.onBeforeSendHeaders.addListener(...)。
但是,我不知道。
谁能给我一些建议??
class BrowserConfig {
apply (userAgent, language) {
let targetURL = "<all_urls>"
function rewriteHeader(e) {
e.requestHeaders.forEach(function(header){
let headerName = header.name.toLowerCase();
if (headerName === "user-agent") {
header.value = userAgent;
}
});
return {requestHeaders: e.requestHeaders};
}
// the cause of this problem....?
chrome.webRequest.onBeforeSendHeaders.addListener(
rewriteHeader,
{urls: [targetURL]},
["blocking", "requestHeaders", "extraHeaders"]
);
}
import BrowserConfig from 'pass/to/BrowserConfig.js'
const browserConfig = new BrowserConfig()
// browserOptions example... {userAgent: HeadlessChrome}
chrome.storage.local.get('browserOptions', ({ browserOptions }) => {
this.browserConfig.apply(browserOptions.userAgent)
})
预期行为
// 1st
set userAgent = 'aaaaa'
=> requestHeader = [{name: 'User-Agent', value: 'aaaaa'}]
// 2nd
set userAgent = 'bbbbb'
=> requestHeader = [{name: 'User-Agent', value: 'bbbbb'}]
实际行为
// 1st
set userAgent = 'aaaaa'
=> requestHeader = [{name: 'User-Agent', value: 'aaaaa'}]
// 2nd
set userAgent = 'bbbbb'
=> // webrequest end up send 2 times.....
requestHeader = [{name: 'User-Agent', value: 'aaaaa'}]
requestHeader = [{name: 'User-Agent', value: 'bbbbb'}]
// 3rd
set userAgent = 'ccccc'
=>
requestHeader = [{name: 'User-Agent', value: 'aaaaa'}]
requestHeader = [{name: 'User-Agent', value: 'bbbbb'}]
requestHeader = [{name: 'User-Agent', value: 'ccccc'}]