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?
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.