我想在Safari中欺骗navigator.platform属性,以便我可以让网站认为我在Windows体系结构上运行。我创建了一个尝试执行此操作的Safari扩展。该插件只包含一个空白的“global.html”文件和一个文件“spoof.js”,它作为“启动脚本”注入(基本上它在该页面的内容加载之前在每个页面上执行)。 spoof.js的内容是:
//Copied from http://stackoverflow.com/questions/2166540/how-can-i-fool-a-site-that-looks-at-the-javascript-object-navigator-to-see-tha
new_navigator = {};
for (var i in navigator) {
new_navigator[i] = navigator[i];
}
new_navigator.platform = 'Windows';
navigator = new_navigator;
//alert(navigator.platform);
如果我取消注释最后一行,每次加载页面时警报框都会显示“Windows”,但是当我使用this page测试扩展时,网站始终将navigator.platform属性读作“MacIntel”。
我在Apple的Safari extension developer's guide中找到了这段摘录。
注入的脚本具有隐含的命名空间 - 您不必担心 关于你的变量或函数名称与 网站作者,网站作者也无法在您的网站上调用函数 延期。换句话说,注入的脚本和脚本包括在内 网页在孤立的世界中运行,彼此无法访问 功能或数据。
这是否意味着我无法使用Safari扩展程序编辑导航器项?有什么办法可以使用扩展名设置导航器对象吗?