How can I fool a site that looks at the JavaScript object 'navigator' to see that I'm not on Windows?
browser, javascript, user-agent
Solution
Since you can't directly set `navigator.platform`, you will have to be sneaky - create an object that behaves like `navigator`, replace its `platform`, then set `navigator` to it.
var fake_navigator = {};
for (var i in navigator) {
fake_navigator[i] = navigator[i];
}
fake_navigator.platform = 'MyOS';
navigator = fake_navigator;
If you execute this code before the document loads (using GreaseMonkey, an addon or a Chrome extension), then the page will see `navigator.platform` as `"MyOS"`.
Note: tested only in Chrome.
Problem
I am trying to browse a website, however, it only works under Windows and Mac because they use the `navigator.platform` from JavaScript to find out the architecture I am running on. Of course, they also use the browser's user agent, but that was easy to spoof. Here is the .js in question: http://pastebin.com/f56fd608d. The code responsible for browser detection is at the top. Is there any way of changing the .js file before the site runs, or something similar, so I can eliminate the check? Using the JavaScript console yields: `>navigator.platform` `Linux i686` Evidently I changed the browser's user agent, but `navigator.platform` does not seem to take it's value from the user agent. Maybe someone knows how to change the value returned by `navigator.platform`, because I hate running Windows under VirtualBox to use this site. EDIT: This could be of interest because Linux users might be artificially denied access to websites, and can do nothing about it.