有没有基于拦截浏览器请求来达成一些事情的浏览器扩展 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
CureDovahkiin
V2EX    程序员

有没有基于拦截浏览器请求来达成一些事情的浏览器扩展

  •  
  •   CureDovahkiin 249 天前 3012 次点击
    这是一个创建于 249 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在页面加载前拦截 xhr 和 fetch 对象

    加个响应拦截器,屏蔽放在用户信息流里面的广告,返回处理后的数据,还能顺便屏蔽 up 主发的广告

    屏蔽一些跟踪脚本的请求,然后不会像 ublock 之类的疯狂在控制台报错,直接把请求吞了。

    之前写了一个 但是感觉会重复造轮子就凑合用没继续写。

    如果是一个扩展,感觉可以订阅一些请求和响应拦截器的脚本和规则,不过做起来好麻烦还是算了

    19 条回复    2025-02-05 09:22:15 +08:00
    v1
        1
    v1  
       249 天前   1
    这么多年了,还有不知道 tampermonkey 的?
    lijiangang886
        2
    lijiangang886  
       249 天前
    没去纠细节,不是说 Chrome manifest V3 把这个功能干废了吗?
    foufoufm
        3
    foufoufm  
       249 天前
    @kk2syc 下载了很久,但是,没啥好用的脚本。。。
    whjlinyi
        4
    whjlinyi  
       249 天前 via iPhone
    AdGuard
    CureDovahkiin
        5
    CureDovahkiin  
    OP
       249 天前
    @kk2syc 我寻思里面链接就是我写的用户脚本啊,就是问有没有优化一下做成扩展的
    klesh
        6
    klesh  
       249 天前
    @kk2syc tampermonkey 能拦截 xhr 和 fetch 对象吗?有没有例子分享一下呀?谢谢。
    Archeb
        7
    Archeb  
       249 天前
    大部分情况下是没办法直接注入页面才需要的请求重写,tampermonkey 能直接注入页面还费那劲重写干嘛
    abccccabc
        8
    abccccabc  
       249 天前
    借这个主题问一下:tampermonkey 如何拦截页面的 audio/video 这些请求呢?一直没有找到这种插件。

    不知那位高手 show 一下代码。
    pingdog
        10
    pingdog  
       249 天前 via Android
    fiddler 可以拦截改返回内容
    CureDovahkiin
        11
    CureDovahkiin  
    OP
       248 天前   1
    @klesh 直接问 deepseek 就行了
    https://gist.github.com/shadowdreamer/4687f0fe1da96bec64db68feccbb09d1
    看了下应该没毛病(
    因为大部分逻辑都通用,所以才想会不会有扩展包装一下,有个修改请求头的扩展叫 Header Editor ,那修改参数和响应体也感觉也可以有
    NoOneNoBody
        12
    NoOneNoBody  
       248 天前
    @abccccabc #8
    umatrix 之类可以拦截 media 类型,不过可能把 font 之类也拦截了
    或者搜 request block (关键词,不是名字)之类的扩展

    油猴脚本拦截需要设置更早的加载时间,因为默认是页面加载完成,这样大部分已经加载了,拦截没意义
    具体让 AI 写一个就行,绰绰有余
    abccccabc
        13
    abccccabc  
       248 天前
    @NoOneNoBody @loginv2 多谢两位分享。找到 http request block 和 custome block 挨个试用下,看看效果。
    leokun
        14
    leokun  
       248 天前
    Hoppscotch 的插件实现了类似功能,不过并不是传统的拦截 xhr 和 fetch
    v1
        15
    v1  
       248 天前   1
    @CureDovahkiin @klesh 注入点选好都可以重写啊,fetch 参考下,xhr 类似

    (function () {
    const originFetch = fetch;
    // console.log(originFetch)
    window.unsafeWindow.fetch = (url, options) => {
    return originFetch(url, options).then(async (response) => {
    console.log(url)
    if(url === 'https://domain/something'){
    const respOnseClone= response.clone()
    let res = await responseClone.json()
    res.data.push('处理数据')
    const respOnseNew= new Response(JSON.stringify(res), response);
    return responseNew
    }else{
    return response
    }
    })
    }
    })()
    v1
        16
    v1  
       248 天前
    @foufoufm 大部分是自己日积月累写下来的针对性脚本,也有一些分享的,比如百度盘 vip 解析啊(虽然从免费变成赞助可用,几块钱也比 svip 便宜)
    foufoufm
        17
    foufoufm  
       248 天前
    @kk2syc 有没有传送门指指北 求求
    lijiangang886
        18
    lijiangang886  
       248 天前
    浏览器为扩展提供了 API 可以拦截请求: [webRequest] (已在 manifest V3 中被 Chrome 废止)和 [declarativeNetRequest]
    EdwardWong
        19
    EdwardWong  
       248 天前
    如果是 Bilibili 可以用 https://github.com/the1812/Bilibili-Evolved ,也是用 user.js 实现的,里面有组件可以过滤首页的流。
    关于     帮助文档   &nbp; 自助推广系统     博客     API     FAQ     Solana     3901 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 05:13 PVG 13:13 LAX 22:13 JFK 01:13
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86