[fiddler] 使用AutoResponder功能修改http响应

Fiddler版本

v5.0.20204.45441 for .NET 4.6.1 64-bit AMD64

前言

fiddler使用bpafter可以手动更改请求的响应,可以用于修改各种接口的返回值,达到比P图、更改html之类更好的修改(欺骗)效果。
但是手动修改总需要时间,如果发起请求的客户端设置的timeout比较短就无法及时修改成功,比如Bilibili安卓端的首页推荐视频接口。
举一个栗子:

中国大学MOOC

比如要求要用视频录下打开课程到点击“我的学习时长”到弹窗显示这整个流程,有两门以上的课程都要展示。
虽然刷一下打开就关也很快,但是总会有忘了时间过期的问题,比如其中的一个小测验

测验已经进入互评阶段,无法提交作业

这里的课时学习进度再也填不上了,这好吗?这不好

这个问题无法用bpafter解决,因为录视频不可能把改响应的操作步骤录进去

AutoResponder

看名字就知道,它会用提前预设好的模板去响应被匹配的请求,丝滑顺畅!

打开AutoResponder选项卡,打开该功能,添加规则:↓

从下拉框中选择 "URLWithBody"这个板子,它除了url外还匹配请求的body(比如POST请求同url却不同body)

根据需要填写匹配内容,请求的body可以打开Inspectors选项卡的Raw子选项卡,空行下方的就是body部分↑

复制得本例接口的url为:https://www.icourse163.org/mm-course/web/j/mocMemberLearnBean.getTermLearn.rpc?csrfKey=87e198e6a0f646c18bae46bdbd813195

因为担心csrfKey可能会改变,于是使用了正则去匹配url部分↓
URLWithBody:regex:https://www\.icourse163\.org/mm-course/web/j/mocMemberLearnBean\.getTermLearn\.rpc\?csrfKey=\w+ regex:^.*termId=1461219447*$
ps: url与body部分的正则都不一定要,上述匹配可以简单写成:↓
URLWithBody:https://www.icourse163.org/mm-course/web/j/mocMemberLearnBean.getTermLearn.rpc?csrfKey=87e198e6a0f646c18bae46bdbd813195 termId=1461219447

然后可以先保存原本的响应,在此基础上进行修改

用文本编辑器打开应类似于:

其中body部分的json正是“学习数据”,不难猜想,修改learnedCount为38即可完成所有视频的观看。将其修改后保存

在AutoResponder的规则编辑器第二行选择刚才修改过的响应文件

如果把该文件保存于fiddler安装目录的ResponseTemplates文件夹下即可直接在上方列表中找到

点击Save后规则就会出现于下方,打钩表示启用该规则

那么现在可就可以重新点击“我的学习时长”来测试一下了

那这样就成功了,挺好玩的

后记

修改了响应的body要注意 Content-Length 可能也要随之修改,主要看字符个数,
比如 learnedTimeCount从26676改成56676没问题,但是改成333326676会发现页面没有响应,控制台也看不到报错
这种情况将 Content-Length 加4(因为多了4个'3')即可

posted @ 2020-11-29 20:05  NoNoe  阅读(248)  评论(0编辑  收藏  举报