当前位置: 代码迷 >> JavaScript >> 如何使用Greasemonkey更改/删除此内联JavaScript?
  详细解决方案

如何使用Greasemonkey更改/删除此内联JavaScript?

热度:98   发布时间:2023-06-07 13:48:23.0

我在网站的开头找到了这个脚本:

<script type="text/javascript" >

function Ext_Detect_NotInstalled(ExtName,ExtID) {
}

function Ext_Detect_Installed(ExtName,ExtID) {
    alert("We have found unwanted extension. Please contact support")
    window.location = "logout.php"
}

var Ext_Detect = function(ExtName,ExtID) {
    var s = document.createElement('script');
    s.onload = function(){Ext_Detect_Installed(ExtName,ExtID);};
    s.onerror = function(){Ext_Detect_NotInstalled(ExtName,ExtID);};
    s.src = 'chrome-extension://' + ExtID + '/captured.js';
    document.body.appendChild(s);
}

var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;

function displayErrorAndLogout() {
    alert("Please use chrome browser to view the content");
    window.location = "logout.php"
}

if (is_chrome==true)
{
    window.onload = function() { Ext_Detect('Chrome','ngpampappnmepgilojfohadhhmbhlaek');};
} else {
    is_chrome = navigator.userAgent.toLowerCase().indexOf('crios') > -1;
    if (is_chrome == false){

        if (detectIE()){
            displayErrorAndLogout()
        }

        if (navigator.userAgent.indexOf('UCBrowser') > -1) {
            displayErrorAndLogout()
        }

该脚本检查Internet下载管理器扩展,并弹出注销消息。 是否可以使用Greasemonkey删除或更改此内联Java脚本?

如果要禁用Chrome插件的检查,这很简单:脚本将一个函数分配给onload ,因此,如果您仅向onload分配其他内容,则Ext_Detect将永远不会运行,并且您的扩展程序也不会被检测到:

window.onload = () => null;

不幸的是,检查criosUCBrowser并运行detectIE的另一部分是同步运行的,大概是在页面加载开始时运行的,并且用户脚本不能在页面加载开始时可靠地运行,因此行为可能无法改变,尽管您可以使用@run-at document-start尝试: displayErrorAndLogout在分配给window.location之前调用alert ,因此,如果您这样做是为了使alert引发错误,则位置不会改变:

@run-at    document-start
// ==/UserScript==
window.alert = function() {
  throw new Error();
};
  相关解决方案