油猴脚本有没有可能做到使html中这段内嵌js失效
fiddler大概可以在响应上直接拦截替换,不知道纯油猴能不能做到?<html>
<head>
下面这段<SCRIPT LANGUAGE="JavaScript">
if (parent.location.href == self.location.href)
{
window.location.href = 'x.asp';
alert('no');
window.stop();
}
//End -->
</script>
...... 本帖最后由 alexPencil 于 2022-9-15 18:09 编辑
// ==UserScript==
// @name replaceJS
// @namespace http://tampermonkey.net/
// @version 0.1
// @AuThor alexPencil
// @match
// @grant none
// @run-at document-start
// ==/UserScript==
(function() {
'use strict';
const dispatch = (script, target) => {
if(script.tagName !== "SCRIPT") {
return;
}
window.onbeforescriptexecute(script);
}
const observer = new MutationObserver(mutations => {
for(const m of mutations) {
m.addedNodes.forEach(n => {
dispatch(n, m.target);
})
}
})
observer.observe(document, {
childList: true,
subtree: true,
});
window.onbeforescriptexecute = (e) => {
if(!e.textContent) {return;}
replaceTxt(e, `window.location.href = 'x.asp';`, "console.log('alexPencil1')");
replaceTxt(e, `alert("no");`, "console.log('alexPencil2')");
replaceTxt(e, `window.stop();`, "console.log('alexPencil3')");
}
function replaceTxt(script, target, change) {
let textContent = script.textContent;
if (textContent.includes(target)) {
script.textContent = textContent.replace(target,change);
}
}})();
尝试将以上代码添加到 tampermonkey,记得修改 match 为你的目标网站 可以用Ajaxhook,就是你想要的效果 本帖最后由 hrdom 于 2022-9-14 21:38 编辑
jidesheng6 发表于 2022-9-14 20:14
可以用Ajaxhook,就是你想要的效果
试了一下似乎不行,因为这个是直接鼠标点击,打开的一个html页面,不是xmlhttprequest,拦截不到 写了段fiddler脚本,暂时可以了,不过开着fiddler可能有些处理导致的延迟 修改js然后本地替换 hrdom 发表于 2022-9-14 21:28
试了一下似乎不行,因为这个是直接鼠标点击,打开的一个html页面,不是xmlhttprequest,拦截不到
hook点击不行吗???? 只有firefox扩展api具备拦截修改html的能力,参见localCDN扩展说明 油猴应该是可以,页面加载完后,把鼠标点击事件给替换掉 你直接在浏览器里把这个地址的JavaScript禁止了不好了
页:
[1]
2