hrdom 发表于 2022-9-14 19:29

油猴脚本有没有可能做到使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-14 19:29

本帖最后由 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 为你的目标网站

jidesheng6 发表于 2022-9-14 20:14

可以用Ajaxhook,就是你想要的效果

hrdom 发表于 2022-9-14 21:28

本帖最后由 hrdom 于 2022-9-14 21:38 编辑

jidesheng6 发表于 2022-9-14 20:14
可以用Ajaxhook,就是你想要的效果
试了一下似乎不行,因为这个是直接鼠标点击,打开的一个html页面,不是xmlhttprequest,拦截不到

hrdom 发表于 2022-9-14 21:33

写了段fiddler脚本,暂时可以了,不过开着fiddler可能有些处理导致的延迟

外酥内嫩 发表于 2022-9-14 21:52

修改js然后本地替换

夜泉 发表于 2022-9-14 22:25

hrdom 发表于 2022-9-14 21:28
试了一下似乎不行,因为这个是直接鼠标点击,打开的一个html页面,不是xmlhttprequest,拦截不到

hook点击不行吗????

5omggx 发表于 2022-9-15 07:01

只有firefox扩展api具备拦截修改html的能力,参见localCDN扩展说明

Nonchalant 发表于 2022-9-15 09:02

油猴应该是可以,页面加载完后,把鼠标点击事件给替换掉

sqcsl888 发表于 2022-9-15 09:41

你直接在浏览器里把这个地址的JavaScript禁止了不好了
页: [1] 2
查看完整版本: 油猴脚本有没有可能做到使html中这段内嵌js失效