How can I fool a site that looks at the JavaScript object 'navigator' to see that I'm not on Windows?

我的未来我决定 提交于 2019-11-28 09:48:37

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.

var fakePlatformGetter = function () {
  return "your fake platform";
};
if (Object.defineProperty) {
  Object.defineProperty(navigator, "platform", {
    get: fakePlatformGetter
  });
} else if (Object.prototype.__defineGetter__) {
  navigator.__defineGetter__("platform", fakePlatformGetter);
}

about:config - > general.platform.override

For a Mozilla-based browser, GreaseSpot / Code Snippets # Hijacking browser properties demonstrates how it may be done. This code may be injected from a GreaseMonkey script.

Provided that the browser you're using supports Object.defineProperty() (it likely does), a more modern way of achieving the same goal is as follows:

Object.defineProperty(navigator, 'platform', {
  value: 'my custom value',
  configurable: true // necessary to change value more than once
});

This allows you to set it to any custom value you want, and it also allows you to change it as many times as you want without needing to reload the page.

Attempting to change this property (at any time) in Firefox yields:

Error: setting a property that has only a getter

Source File: index.html

Line: 1

So I think you will have a hard time.

I'd try to contact the author about obtaining a fix.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!