1

我正在开发 chrome 扩展。

我想通过使用 chrome-webrequest API 重写 http 标头来更改浏览器的 UserAgent,但是出了点问题...

我希望这些代码的行为符合预期,但我不知道该怎么做。

我可以给我建议吗??

浏览器配置.js

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};
  }
    
  chrome.webRequest.onBeforeSendHeaders.addListener(
    rewriteHeader,
    {urls: [targetURL]},
    ["blocking", "requestHeaders", "extraHeaders"]
  );
}

背景.js


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)
})

预期行为

每次设置 browserOption,UserAgent 更改为所需

前任。)

第一个:browserOption = {userAgent: HeadlessBrowser} => userAgent: HeadlessBrowser

第二:browserOption = {userAgent:aaaaaa} => userAgent:aaaaaa

实际行为

只有一次,我可以将 UserAgent 更改为所需的。但是,从第二次开始,我无法改变它。

前任。)

第一个:browserOption = {userAgent: HeadlessBrowser} => userAgent: HeadlessBrowser

第二~ : browserOption = {userAgent: aaaaaa} => userAgent: HeadlessBrowser

4

0 回答 0