在 Rewrite 里只有 reject 返回 404 ,reject-200 (返回 200 但是 Body 里是空)等等,有没有什么方法能拦截请求,并返回 200 以及 提前准备好的假数据(通常是 JSON )?
App -> Request ->QX ->Server 处理 -> QX -> Response -> App
这里QX其实没用,只是为了接下来好理解,因为IOS是全局代理必走QX
App -> Request ->QX -> Response -> App
此处QX截获请求,并返回伪造的Response假数据
1
zivn 2022-10-08 12:50:46 +08:00
Surge 可以
|
2
kera0a 2022-10-08 12:56:17 +08:00
重写规则
类型选 response-body 匹配 URL 写要 拦截的请求 Body 写正则表达式,匹配所有文本 替换 写你要返回的假数据 |
3
Gav1nw OP @kera0a 用 response-body 的话,请求会到后端,只是篡改了接收的数据,我希望数据压根不发往服务端,只在本地 Mock 一下就好
|
4
christin 2022-10-08 13:59:01 +08:00 via iPhone
可以考虑用脚本,把这个请求拦截掉,手动返回数据。
|
5
killva4624 2022-10-08 14:03:29 +08:00
Rewrite Remote ,自己写一段 js 就好。
|
6
Hurriance 2022-10-08 14:38:03 +08:00
借楼问下有无小伙伴用 Quantumult X 看 b 站经常卡顿的问题,关掉代理就又可以了
|
7
Gav1nw OP @killva4624 有具体样例可以参考吗?
|
9
christin 2022-10-08 17:51:49 +08:00
|
10
Gav1nw OP @christin 我看了一下这个用的 script-response-body ,修改的是 已经 经过服务端返回的数据呀
|
11
christin 2022-10-08 19:09:53 +08:00
@Gav1nw 对啊,你可以用代码把请求拦截掉,手动做一些返回的内容。
我觉得你还是直接说应用场景吧,方法肯定是有的,只是按照你目前的描述实现起来比较麻烦。 |
13
arch9999 2022-10-08 19:16:39 +08:00 1
|
14
bronco 2022-10-08 21:30:36 +08:00 via iPhone
圈叉似乎没有提供 loopback 的机制呃……
|
15
SenLief 2022-10-08 21:35:35 +08:00 1
@Hurriance 先看一下 B 站是不是被分流了,另外 b 站的 cdn 有问题,可以重写一下 cdn ,加载就会好很多。
|
16
Love4Taylor 2022-10-08 21:39:44 +08:00
reject-dict, reject-array
|
17
Love4Taylor 2022-10-08 21:41:09 +08:00
@Love4Taylor 哦 不对 你需要的是给定数据不是空数据,这方面 qx 好像确实不太好用
|
18
vaccer 2022-10-08 22:42:12 +08:00
qx 好像不行,surge 倒是可以,有 map local 的功能
|
19
Gav1nw OP @christin 某些打卡类的小程序,打卡显示成功,每次都返回相同的 JSON ,所以根本不用发送到服务器拿到 json 显示,直接 mock 那段 json 即可
|
20
css3 2022-10-09 08:17:41 +08:00 via iPhone
楼主成功了告诉我一声
|
21
stkstkss 2022-10-09 09:30:37 +08:00 via iPhone
楼主成功了告诉我一声
|
22
Areym 2022-10-09 10:28:40 +08:00
楼主成功了告诉我一声
|
24
archknight 2022-10-09 15:45:15 +08:00 via iPhone
楼主成功了告诉我一声
|
26
peanut0105 2022-10-09 18:59:46 +08:00
mitm + script-response-body 自己写一段 js 就可以重写返回数据了
|
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); |
28
takpap 2022-11-02 17:51:46 +08:00
必须要经过服务器吧,除非你修改 dns / host ,想怎么糊弄客户端都行
|
29
asdfgfd 2022-11-03 19:51:36 +08:00
|
30
woldfoll 2023-01-15 16:29:47 +08:00 via iPhone
重写 script-echo-response 可以实现
|