Нет стандартного способа справиться с этим. Функция, которую вы хотите отключить, запускается, как только браузер читает эту часть HTML, что означает, что вы не можете удалить узел сценария из tampermonkey, даже если вы запускаете usercript в начале загрузки документа (используя @run-at document-start
).
Вы можете попытаться использовать тот факт, что они называют setTimeout
. Идея состоит в том, чтобы выдать ошибку в тот момент, когда они ее вызывают, чтобы их фрагмент кода не работал должным образом.
Код должен выглядеть следующим образом. Убедитесь, что вы получаете доступ к незаписанному window
объекту.
const oldSetTimeout = window.setTimeout;
// replace setTimeout with our hacked version
window.setTimeout = newSetTimeout;
/**
*
* @param {function} cb
* @param {number} delay
*/
function newSetTimeout(cb, delay) {
// Check if callback contains string we know from the sourcecode
if (cb && cb.toString().indexOf("bwf-loading")!=-1) {
// misdeed done, restore normal setTimeout
window.setTimeout = oldSetTimeout;
throw new Error("Failing set timeout to kill unwanted script.");
}
// otherwise act as normal setTimeout
else {
return oldSetTimeout.call(window, arguments);
}
}