dawnl-lc 发表于 2024-2-12 22:05:13

如何在脚本中拦截页面加载script

例如某个网站页面中包含
`<script src="/main.js"></script>`
以及
`<script>something</script>`
如何使用脚本去拦截页面加载这些内置的js?

李恒道 发表于 2024-2-12 22:05:14

dawnl-lc 发表于 2024-2-12 22:50
包含成人内容,请酌情查看

https://www.iwara.tv/videos


// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      2024-02-12
// @descriptiontry to take over the world!
// @author       You
// @match      https://www.iwara.tv/videos
// @icon         https://www.google.com/s2/favicons?sz=64&domain=iwara.tv
// @grant      GM_xmlhttpRequest
// @grant      unsafeWindow
// @run-at       document-start
// @grant      GM_addElement

// ==/UserScript==

const origiforEach=unsafeWindow.Array.prototype.forEach

function runScript(){
    GM_xmlhttpRequest({
      url:"https://www.iwara.tv/main.1c9cbe28282b6403f86e.js",
      method :"GET",
      headers: {
            "Content-type": "application/x-www-form-urlencoded"
      },
      onload:function(xhr){

            console.log(xhr.responseText);

            GM_addElement('script', {
                textContent: xhr.responseText.replace('An({', 'false && An({')
            });
      }
    });
}

unsafeWindow.Array.prototype.forEach=function(...args){
    let err= new Error('大赦天下');
    console.log('keys大赦天下',err)
    if(err.stack.indexOf('main.1c9cbe28282b6403f86e.js')!==-1){
      runScript()
      throw err;
    }

    return origiforEach.call(this,...args)
}
我不确定有没有实现
没看出来具体区别在哪

李恒道 发表于 2024-2-12 22:35:29

最好来个实际测试的网站看看
哥哥

cxxjackie 发表于 2024-2-12 22:40:01

油猴通常不给这类权限,可以用广告拦截插件来做,比如AdBlock,添加自定义规则即可。

dawnl-lc 发表于 2024-2-12 22:50:44

李恒道 发表于 2024-2-12 22:35
最好来个实际测试的网站看看
哥哥

包含成人内容,请酌情查看

https://www.iwara.tv/videos
主要想屏蔽掉:t.iwara.tv/js/
以及篡改:www.iwara.tv/main.1c9cbe28282b6403f86e.js
想把里面的 Matomo sentry 两个玩意干掉,测试过直接屏蔽t.iwara.tv/js/没问题,但是main.1c9cbe28282b6403f86e.js需要修改内容 我懒得分析直接找到sentry初始化函数 replace('An({', 'false && An({')就行

dawnl-lc 发表于 2024-2-12 22:51:36

cxxjackie 发表于 2024-2-12 22:40
油猴通常不给这类权限,可以用广告拦截插件来做,比如AdBlock,添加自定义规则即可。 ...

想一站式解决,有没有野路子

dawnl-lc 发表于 2024-2-12 22:53:06

我试过    //@ts-ignore
    GM_webRequest([
      { selector: 't.iwara.tv/js/', action: 'cancel' },
      { selector: 'www.iwara.tv/main.*.js', action: 'cancel' }
    ], function (info: any, message: any, details: any) {
      console.log(info, message, details);
    });
没用

李恒道 发表于 2024-2-12 23:53:57

dawnl-lc 发表于 2024-2-12 22:50
包含成人内容,请酌情查看

https://www.iwara.tv/videos


这段代码如果移除具体表现在哪里

dawnl-lc 发表于 2024-2-13 00:00:53

本帖最后由 dawnl-lc 于 2024-2-13 00:02 编辑

李恒道 发表于 2024-2-12 23:56
// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/

Matomo 网站统计分析程序
sentry 前端异常监控平台
这两个玩意都会劫持各种对象
单步调试一个自定义js类会调试到这两货内部

李恒道 发表于 2024-2-13 00:08:58

dawnl-lc 发表于 2024-2-13 00:00
Matomo 网站统计分析程序
sentry 前端异常监控平台
这两个玩意都会劫持各种对象

哥哥你试一下我提供的代码有没有hook掉AE呗
我不太会调

页: [1] 2 3
查看完整版本: 如何在脚本中拦截页面加载script