gpt4 book ai didi

javascript - 拦截脚本加载

转载 作者:行者123 更新时间:2023-11-28 01:08:06 25 4
gpt4 key购买 nike

我需要的是 Hook /拦截其他外部 JS 负载。我可以将js放在文档中的任何位置

示例:

<script src="hook.js"></script>
<script src="a.js"></script>
<script src="b.js"></script>

Hook.js 应该拦截 a.js 和 b.js。问题是,当执行 hook.js 时,我看不到其他脚本(document.scripts 仅包含 hook.js)并且文档就绪事件为时已晚(脚本 a.js 和 b.js 被执行)。

在执行之前有什么方法可以“查看”其他脚本标签吗?感谢您的帮助

编辑

  1. 我需要在 hook.js 中执行任何“魔法”,而无需修改(静态)其他 HTML。
  2. 没有 jQuery

最佳答案

信用在这里:https://stackoverflow.com/a/59424277/2016831您可以使用 MutationObserver 来查看哪些元素被添加到 DOM 中,添加它们时,只需更改源代码,或者如果它引用另一个 URL,只需将其重定向到您自己的服务器,并将原始 URL 作为改为获取参数,并以这种方式返回修改后的代码。

根据上面的答案,你可以这样做:

<script>
new MutationObserver((m, o) => {
let potentialScript = document.querySelector("script + script");
console.log(potentialScript.textContent);
if(potentialScript) {
o.disconnect();
potentialScript
.textContent =
potentialScript
.textContent
.replace(
"})()",
`
window.wow = mySecretMethod;
})()
`
);


}
}).observe(
document.body,
{
childList:1
}
);

</script>

<script>
(function() {
let mySecretMethod = () => {
//does a bunch of evil secret stuff
console.log("HA!");
};
})();

wow()
</script>

<script>
console.log(wow())
</script>

或者,您可以使用 Chrome 扩展程序重定向 HTTP 请求,请参阅 https://stackoverflow.com/a/61202516/2016831了解更多

关于javascript - 拦截脚本加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24809309/

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