覆盖 Javascript SetTimeout 时间但保留内部函数

Overwrite Javascript SetTimeout time but keep the inside function

我正在尝试制作一个 tampermonkey 脚本来减少 javascript 函数 (SetTimeout) 的时间,以便更快地重定向页面。页面代码是这样的:

<script type="text/javascript">
    window.setTimeout(function() {
        window.location.replace("http://linkhere.com/R4NDoM1CODEHeRE" + window.location.hash);
    }, 3000);
</script>

在被这个重定向后我总是在同一页面结束(就像那些强迫你填写 reCaptcha 然后他们再次将你转移回同一页面,要求你等待几秒钟然后转移到另一个 reCaptcha 页面)。

有人可以帮我完成这个任务吗?

可以使用正则表达式找到 http://mylinkhere.link 并立即重定向到它(如果您愿意,也可以显示按钮)。

像这样的东西应该可以工作:

var target = /document\.getElementById\('show'\)\.innerHTML = '<a href="([^"]*)|replace\("([^"]*)" \+ window/.exec(document.documentElement.innerHTML);
window.location = target[1] || target[2];

编辑: 更正答案。将 contents 更改为 document.documentElement.innerHTML

编辑 2: 再次更正答案。

编辑 3: 更新了答案,使其适用于原始问题的两个页面。

为了更通用,覆盖 window.setTimeout 函数。

window.setTimeout = ((original) =>
  (codeOrFunc, delay, ...args) =>
    original(codeOrFunc, 0, ...args)
)(window.setTimeout);

聊天中的@Originato 解决方案:

(function() {
    'use strict';
    window.seconds = -1;
    var target = /document\.getElementById\('show'\)\.innerHTML = '<a href="([^"]*)|replace\("([^"]*)" \+ window/.exec(document.documentElement.innerHTML);
    window.location = target[1] || target[2];
})();