Search code examples
google-chrome-extensionuser-agent

Chrome Extension : Modify User-Agent string


In Firefox extension, we can do:

var _prefService =  Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
var httpHandler = Cc["@mozilla.org/network/protocol;1?name=http"].getService(Ci.nsIHttpProtocolHandler);
setCharPref("general.useragent.override",httpHandler.userAgent + " OurUAToken/1.0");

To add "OurUAToken/1.0" at the end of User-Agent string.

How can we duplicate this behavior in Google Chrome?


Solution

  • The chrome.webRequest API suggested earlier is quite stable now.

    chrome.webRequest.onBeforeSendHeaders.addListener(
      function (details) {
        for (var i = 0; i < details.requestHeaders.length; ++i) {
          if (details.requestHeaders[i].name === "User-Agent") {
            details.requestHeaders[i].value = details.requestHeaders[i].value + " OurUAToken/1.0";
            break;
          }
        }
        return { requestHeaders: details.requestHeaders };
      },
      { urls: ["<all_urls>"] },
      ["blocking", "requestHeaders"]
    );
    
    

    One of the chrome extensions, Requestly already has similar implementation to allow overriding User Agent string for any website opened in the browser.


    For more info, please visit blog: https://medium.com/@requestly_ext/switching-user-agent-in-browser-f57fcf42a4b5

    The extension is also available for Firefox. Visit http://www.requestly.in for details.