我刚遇到https://www.hotslogs.com,如果广告无法正常使用,则会使用javascript重定向到广告拦截页面。
其源代码如下所示
function FillMonkeyBrokerHorizontal01() {}
function nb6fda3f1(src) { //function name is randomly generated
if (true) {
var jqueryWindow = $(window);
jqueryWindow.attr("location", "/Info/AdBloc" + "k?Sour" + "ce=" + src);
} else
ga("send", "event", "AdFillMonkeyBroker", "Ad Blocked Acceptably", {
nonInteraction: true
});
}
//other if-conditions calls this function

我的第一个想法是将此函数修改为不执行任何操作的函数。我在Stop execution of Javascript function (client side) or tweak it中尝试了解决方案,jsbin.com/ogudon/1上的示例为我工作。
然而,当我尝试我的解决方案时
// ==UserScript==
// @name hotslogs.com adblock killer killer
// @description hotslogs.com adblock killer killer
// @include https://www.hotslogs.com/*
// @run-at document-start
// @version 1
// @grant none
// ==/UserScript==
checkForBadJavascripts([
[TRUE,
/mb105.gz.js/, alert("intercepted mb105.gz.js");
]
[FALSE,
/AdBloc/, alert("intercepted adbloc function");
]
]);
//checkForBadJavascripts definitions,etc.

效果不佳,页面重定向到adblock页面并且未触发任何警报。我不确定是否是由于HTML5标准中不支持before / afterscriptexecute或者我错过了什么。任何建议或替代解决方案?