【发布时间】:2015-08-11 16:39:17
【问题描述】:
如何在 javascript 中覆盖 navigator.plugins?
有一个网站使用 navigator.plugins 读取我的插件列表,我不想让他们阅读我的插件,我想向他们展示假插件列表。
我怎样才能做到这一点?
我知道这是重复的,但我对这个不满意:
How to override navigator.plugins in javascript or how to set it null?
为了覆盖 javascript 中的函数,我们可以这样操作:
<script type="text/javascript">
window.DoStuff = function () {
alert("bar"); //this is the override
};
function DoStuff() {
alert("foo"); //this is the original, occuring later in the page
};
</script>
但是 navigator.plugins 呢?
这是我们阅读这些插件列表的方式:
if (navigator.plugins && navigator.plugins.length) {
for (var v = "", w = 0; w < navigator.plugins.length; w++) {
var x = navigator.plugins[w].name; -1 != x.indexOf("Java") && (t = !0);
v += x + "\r\n"
}
alert(v);
}
如您所见,该网站是一个恶意网站,出于某些原因想了解已安装的插件。
我怎样才能绕过它们?
根据第一个答案进行编辑:
那么我们如何用 js 函数改变他们的代码,并用主列表替换新的插件列表呢?
这样就不用改只读的window.navigator.plugins了!
【问题讨论】:
-
Window.navigator属性是只读的,所以您会认为Window.navigator.plugins也是如此,这可能意味着您无法更改它。 -
如何覆盖他们的 js 代码?意思是运行一个js函数来替换主插件列表?
标签: javascript plugins overriding