V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Gav1nw
V2EX  ›  Apple

Quantumult X 怎么才能拦截请求并返回假数据

  •  
  •   Gav1nw · 2022-10-08 12:46:47 +08:00 · 5254 次点击
    这是一个创建于 776 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 Rewrite 里只有 reject 返回 404 ,reject-200 (返回 200 但是 Body 里是空)等等,有没有什么方法能拦截请求,并返回 200 以及 提前准备好的假数据(通常是 JSON )?

    第 1 条附言  ·  2022-10-12 18:59:21 +08:00

    可能我的描述不准确,在此重新澄清一下:

    正常的流程

    App -> Request ->QX ->Server 处理 -> QX -> Response -> App

    这里QX其实没用,只是为了接下来好理解,因为IOS是全局代理必走QX

    我的期望:

    App -> Request ->QX -> Response -> App

    此处QX截获请求,并返回伪造的Response假数据

    30 条回复    2023-01-15 16:29:47 +08:00
    zivn
        1
    zivn  
       2022-10-08 12:50:46 +08:00
    Surge 可以
    kera0a
        2
    kera0a  
       2022-10-08 12:56:17 +08:00
    重写规则
    类型选 response-body
    匹配 URL 写要 拦截的请求
    Body 写正则表达式,匹配所有文本
    替换 写你要返回的假数据
    Gav1nw
        3
    Gav1nw  
    OP
       2022-10-08 13:16:15 +08:00
    @kera0a 用 response-body 的话,请求会到后端,只是篡改了接收的数据,我希望数据压根不发往服务端,只在本地 Mock 一下就好
    christin
        4
    christin  
       2022-10-08 13:59:01 +08:00 via iPhone
    可以考虑用脚本,把这个请求拦截掉,手动返回数据。
    killva4624
        5
    killva4624  
       2022-10-08 14:03:29 +08:00
    Rewrite Remote ,自己写一段 js 就好。
    Hurriance
        6
    Hurriance  
       2022-10-08 14:38:03 +08:00
    借楼问下有无小伙伴用 Quantumult X 看 b 站经常卡顿的问题,关掉代理就又可以了
    Gav1nw
        7
    Gav1nw  
    OP
       2022-10-08 17:32:09 +08:00
    @killva4624 有具体样例可以参考吗?
    Gav1nw
        8
    Gav1nw  
    OP
       2022-10-08 17:32:45 +08:00
    @christin 这是什么意思?
    Gav1nw
        10
    Gav1nw  
    OP
       2022-10-08 18:36:59 +08:00
    @christin 我看了一下这个用的 script-response-body ,修改的是 已经 经过服务端返回的数据呀
    christin
        11
    christin  
       2022-10-08 19:09:53 +08:00
    @Gav1nw 对啊,你可以用代码把请求拦截掉,手动做一些返回的内容。
    我觉得你还是直接说应用场景吧,方法肯定是有的,只是按照你目前的描述实现起来比较麻烦。
    christin
        12
    christin  
       2022-10-08 19:10:41 +08:00   ❤️ 1
    @Hurriance 你看一下 b 站链接走的哪个分流,可能是分流的问题导致 b 站视频走了国外代理导致的。
    arch9999
        13
    arch9999  
       2022-10-08 19:16:39 +08:00   ❤️ 1
    bronco
        14
    bronco  
       2022-10-08 21:30:36 +08:00 via iPhone
    圈叉似乎没有提供 loopback 的机制呃……
    SenLief
        15
    SenLief  
       2022-10-08 21:35:35 +08:00   ❤️ 1
    @Hurriance 先看一下 B 站是不是被分流了,另外 b 站的 cdn 有问题,可以重写一下 cdn ,加载就会好很多。
    Love4Taylor
        16
    Love4Taylor  
       2022-10-08 21:39:44 +08:00
    reject-dict, reject-array
    Love4Taylor
        17
    Love4Taylor  
       2022-10-08 21:41:09 +08:00
    @Love4Taylor 哦 不对 你需要的是给定数据不是空数据,这方面 qx 好像确实不太好用
    vaccer
        18
    vaccer  
       2022-10-08 22:42:12 +08:00
    qx 好像不行,surge 倒是可以,有 map local 的功能
    Gav1nw
        19
    Gav1nw  
    OP
       2022-10-08 22:48:52 +08:00
    @christin 某些打卡类的小程序,打卡显示成功,每次都返回相同的 JSON ,所以根本不用发送到服务器拿到 json 显示,直接 mock 那段 json 即可
    css3
        20
    css3  
       2022-10-09 08:17:41 +08:00 via iPhone
    楼主成功了告诉我一声
    stkstkss
        21
    stkstkss  
       2022-10-09 09:30:37 +08:00 via iPhone
    楼主成功了告诉我一声
    Areym
        22
    Areym  
       2022-10-09 10:28:40 +08:00
    楼主成功了告诉我一声
    christin
        23
    christin  
       2022-10-09 14:17:10 +08:00 via iPhone
    @Gav1nw 那服务器端就没有收到你的打卡记录啊,后面再看就没有打卡了。
    archknight
        24
    archknight  
       2022-10-09 15:45:15 +08:00 via iPhone
    楼主成功了告诉我一声
    Gav1nw
        25
    Gav1nw  
    OP
       2022-10-09 16:08:21 +08:00
    @christin 目的就是不让服务端感知到,只是糊弄本地的小程序
    peanut0105
        26
    peanut0105  
       2022-10-09 18:59:46 +08:00
    mitm + script-response-body 自己写一段 js 就可以重写返回数据了
    peanut0105
        27
    peanut0105  
       2022-10-09 18:59:59 +08:00
    @peanut0105 console.log("success run scrpit!");
    var body = $response.body;

    var obj = JSON.parse(body);

    obj.data.sampleDate = "xxxx";

    var newBody = JSON.stringify(obj);

    $done(newBody);
    takpap
        28
    takpap  
       2022-11-02 17:51:46 +08:00
    必须要经过服务器吧,除非你修改 dns / host ,想怎么糊弄客户端都行
    asdfgfd
        29
    asdfgfd  
       2022-11-03 19:51:36 +08:00
    hs dddd, Github 搜索域名找到可用的脚本, 请求 302 到 abc.com, 重写 mitm abc.com js 返回结果, 建议改 alipay 的, 可以拦掉 log
    woldfoll
        30
    woldfoll  
       2023-01-15 16:29:47 +08:00 via iPhone
    重写 script-echo-response 可以实现
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5341 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:59 · PVG 14:59 · LAX 22:59 · JFK 01:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.