Skip to content

Instantly share code, notes, and snippets.

@thorsten
Created May 9, 2016 15:12
Show Gist options
  • Star 40 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save thorsten/148812e9cc4fb6a19215ce22afd4e5a8 to your computer and use it in GitHub Desktop.
Save thorsten/148812e9cc4fb6a19215ce22afd4e5a8 to your computer and use it in GitHub Desktop.
Override user agent on all browsers
function setUserAgent(window, userAgent) {
// Works on Firefox, Chrome, Opera and IE9+
if (navigator.__defineGetter__) {
navigator.__defineGetter__('userAgent', function () {
return userAgent;
});
} else if (Object.defineProperty) {
Object.defineProperty(navigator, 'userAgent', {
get: function () {
return userAgent;
}
});
}
// Works on Safari
if (window.navigator.userAgent !== userAgent) {
var userAgentProp = {
get: function () {
return userAgent;
}
};
try {
Object.defineProperty(window.navigator, 'userAgent', userAgentProp);
} catch (e) {
window.navigator = Object.create(navigator, {
userAgent: userAgentProp
});
}
}
}
@Noext
Copy link

Noext commented Dec 21, 2021

not working, navigator.defineGetter dont exist

@avalanche1
Copy link

Since long time ago browsers have prohibited spoofing User-Agent header in http requests.
No matter what you do, the browse still gonna send the real UA header.
Two methods to overcome that situation:

  1. Use browser extension, that modifies outgoing http request headers (webRequest persmission)
  2. Send the request from a server

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment