一、使用Fiddler进行HTTP断点调试
断点调试是Fiddler又一强大和实用的工具之一。通过设置断点,Fiddler可以做到:
1.修改HTTP请求头信息。例如修改请求头的UA,Cookie,Referer信息,通过“伪造”相应信息达到达到相应的目的(调试,模拟用户真实请求等)。
2.构造请求数据,突破表单的限制,随意提交数据。避免页面js和表单限制影响相关调试。
3.拦截响应数据,修改响应实体。
为什么以上方法是重要的?假设js前端程序员和服务器程序员是分工合作的,js程序员想要调试Ajax请求的功能,这样便不必等待服务器端程序员开发好所有接口之后再开始开发js端的ajax请求功能,因为通过“模拟”真实的服务器端的响应,便可以保证功能的正确性,而服务器端开发程序员,只要保证最终的响应是符合规定的即可。这大大简化了程序开发的效率,当然也降低了不同业务线程序员联调的难度。
二、设置断点的两种方式
1.fiddler菜单栏- rules- automaticBreakpoints- 选择断点方式,这种方式下设定的断点会对之后的所有HTTP请求有效。
有两个断点位置:
a.beforeresponse。也就是发送请求之后,但是Fiddler代理中转之前,这时可以修改请求的数据。
b.afterresponse。也就是服务器响应之后,但是在Fiddler将响应中转给客户端之前。这时可以修改响应的结果。
2.命令行下输入。Bpafterxxx或者bpv,bpu,bpm等设置断点。这种断点只针对特定类型的请求。在命令行中输入命令: bpu www.baidu.com (这种方法只会中断www.baidu.com),如何消除命令呢?在命令行中输入命令 bpu。
5.修改之后点Run to Completion就能提交了,于是就成功修改了请求参数了
6.打全局断点的话,是无法正常上网的,需要清除断点:rules- automatic breakpoint - disabled
四、设置全局断点after requests
1.打开fiddler 点击rules- automatic breakpoint - after requests(电脑端快捷键:Alt+F11)
2.浏览器打开www.jianshu.com 会发现无法打开,一直在等待中,说明断点成功
3.在fiddler会话框前面图标显示下箭头,如下图所示
7.所以此断点可以修改服务器返回的数据,改成你所需要测试的数据,这样在前端就能显示了
五、单个断点
已经知道了某个接口的请求地址,这时候只需要针对这一条请求打断点调试,在命令行中输入指令就可以了
请求前断点(beforeresponse): bpu
1. 简书登录接口:https://www.jianshu.com/sign_in
2. 命令行输入:bpu https://www.jianshu.com/sign_in 回车
请求前断点bpu
3.请求登录接口的时候,就会只拦截登录这个接口了,此时可以修改任意请求参数
4.取消断点,在命令行输入: bpu 回车就可以了
响应后断点(after requests): bpafter
1. 简书登录接口:https://www.jianshu.com/sign_in
2. 在命令行输入:bpafter https://www.jianshu.com/sign_in 回车
响应后断点bpafter
3.登录简书,会发现已经拦截到登录后服务器返回的数据了,此时可以修改任意返回数据
4.取消断点,在命令行输入: bpafter 回车就可以了
六、拦截来自某个网站所有请求
1.在命令行输入:bpu www.jianshu.com
2.打开简书任意网页,发现都被拦截到了
3.打开简书其他网站,其它网站可以正常请求
4.说明只拦截了来自简书(www.jianshu.com)的请求
5.清除输入bpu回车即可
七、命令行其它相关指令
Bpafter,Bps,bpv,bpm,bpu
这几个命令主要用于批量设置断点
Bpafterxxx:中断 URL 包含指定字符的全部 session 响应
Bpsxxx:中断HTTP响应状态为指定字符的全部session响应
Bpvxxx:中断指定请求方式的全部 session 响应
Bpmxxx:中断指定请求方式的全部 session 响应 、、同于 bpvxxx
Bpuxxx:与bpafter类似
当这些命令没有加参数时,会清空所有设置了断点的HTTP请求。更多的其他命令可以参考Fiddler官网手册:www.telerik.com/download/fiddler/fiddler4
作者:keitwo
链接:https://www.jianshu.com/p/3783ce1c829d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。