gpt4 book ai didi

javascript - Greasemonkey 欺骗用户代理

转载 作者:行者123 更新时间:2023-11-28 15:26:05 25 4
gpt4 key购买 nike

在我访问的网站中,有一些代码用于检查用户代理,如果不是 IE,它将重定向到另一个网站。

if( ! window.navigator.appVersion.match(/MSIE ([0-9]+.)[A-Za-z0-9.]+;/) || new Number(parseFloat (RegExp.$1)) < 5.5 ){
window.location.replace("/iedownload.htm");
}

有没有办法制作一个快速的greasemonkey脚本来欺骗用户代理?我试过了

GM_xmlhttpRequest({
method: 'GET',
url: window.location.href,
headers: {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 9.0;) Greasemonkey',
'Accept': '*/*',
},
});

但是没有成功。

最佳答案

简单的方法是不使用 GreaseMonkey,而是使用在发送请求之前修改 UserAgent 的附加组件。如果检查是在服务器端进行的,则此方法将不起作用。

但无论如何,你可以尝试Max建议的here .

所以,像这样:

var fakeAppVersion = function () {
return "MSIE 9.0;";
};
if (Object.defineProperty) {
Object.defineProperty(navigator, "appVersion", {
get: fakeAppVersion
});
} else if (Object.prototype.__defineGetter__) {
navigator.__defineGetter__("appVersion", fakeAppVersion);
}

记得使用 //@run-at 文档开始

编辑:我想如果在该片段有机会运行之前完成检查,这可能不起作用。在这种情况下,您可以像尝试一样使用 GM_xmlhttpRequest,但将其在新选项卡中打开。 [我猜您可能需要禁用该网站的弹出窗口拦截器]。

Greasemonkey 的安全性已经变得相当烦人(至少在我正在测试的 Firefox 上),Brock 解决了这个问题 here 。修改他的代码以满足您的需求,我得到了这个(据我所知有效):

if (window.location.href != 'about:blank') {

GM_xmlhttpRequest({
method: 'GET',
url: window.location.href,
headers: {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 9.0;) Greasemonkey',
'Accept': '*/*',
},
onload: function(response){
var data = response.responseText;
addJS_Node (null, null, fireNewTab, data, fireNewTab );
}
})

function fireNewTab (data) {
var newTab = window.open ('about:blank', '_blank');
newTab.addEventListener (
"load",
function () {
//--- Now process the popup/tab, as desired.
var destDoc = newTab.document;
destDoc.open ();
destDoc.write (decodeURI(data));
destDoc.close ();
},
false
);
}

function addJS_Node (text, s_URL, funcToRun, data, runOnLoad) {
var D = document;
var scriptNode = D.createElement ('script');
if (runOnLoad) {
scriptNode.addEventListener ("load", runOnLoad, false);
}
scriptNode.type = "text/javascript";
if (text) scriptNode.textContent = text;
if (s_URL) scriptNode.src = s_URL;
if (funcToRun) scriptNode.textContent = '(' + funcToRun.toString() + ')("' + encodeURI(data) +'")';

var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
targ.appendChild (scriptNode);
}
}

当然,您需要//@grant GM_xmlhttpRequest..

关于javascript - Greasemonkey 欺骗用户代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28861689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com