V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
CureDovahkiin
V2EX  ›  程序员

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

  •  
  •   CureDovahkiin · 1 天前 · 1371 次点击

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

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

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

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

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

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

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

    油猴脚本拦截需要设置更早的加载时间,因为默认是页面加载完成,这样大部分已经加载了,拦截没意义
    具体让 AI 写一个就行,绰绰有余
    abccccabc
        13
    abccccabc  
       11 小时 59 分钟前
    @NoOneNoBody @loginv2 多谢两位分享。找到 http request block 和 custome block 挨个试用下,看看效果。
    leokun
        14
    leokun  
       10 小时 5 分钟前
    Hoppscotch 的插件实现了类似功能,不过并不是传统的拦截 xhr 和 fetch
    kk2syc
        15
    kk2syc  
       8 小时 23 分钟前
    @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
              }
          })
      }
    })()
    kk2syc
        16
    kk2syc  
       8 小时 20 分钟前
    @foufoufm 大部分是自己日积月累写下来的针对性脚本,也有一些分享的,比如百度盘 vip 解析啊(虽然从免费变成赞助可用,几块钱也比 svip 便宜)
    foufoufm
        17
    foufoufm  
       7 小时 1 分钟前
    @kk2syc 有没有传送门指指北 求求
    lijiangang886
        18
    lijiangang886  
       5 小时 9 分钟前
    浏览器为扩展提供了 API 可以拦截请求: [webRequest] (已在 manifest V3 中被 Chrome 废止)和 [declarativeNetRequest]
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   694 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 19:57 · PVG 03:57 · LAX 11:57 · JFK 14:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.