使用Fiddler进行http抓包和调试
本文目录 :
俗话说:工欲善其事,必先利其器。
Fiddler是windows下前后端开发的一大调试利器。
Fiddler工作于 ISO 七层中的应用层,对 http(s) 的报文抓取分析和调试非常给力,但是似乎不直接支持 tcp/udp 等其他协议报文的抓取。
windows上可以使用wireshare进行所有报文的抓取,但是它大而不专了,对 http(s) 这协议没有过多的可操作性。
linux上可以用tcpdump等命令工具。
本文主要写一下这个利器的主要使用方法。
1、 Fiddler的工作原理
其原理图如下:
上图中间的东西就是Fiddler软件,它作为计算机上的网络代理,所有的http(s)请求和响应都要通过它来传输,竟然它扼住网络的喉咙,有些事情就比较好办了。发挥你的想象力,它就可以截住请求、截住响应、修改请求内容、修改响应内容、报文内容截取分析、https证书替换和SSL加密解密。是的,这正是下面所有要讲的内容,都是依据这个原理展开的。
它是如何进行网络代理的呢?
在安装了Fiddler的系统中,启动Fiddler之后它会监听8888端口(默认8888,可以修改)。监听里边的数据流加以解析和修改。
在实践中,我尝试用它来抓取QQ客户端的报文,发现没法抓到,其实设置一下QQ的网络代理为浏览器代理即可。浏览器默认是启动监听了。
因为Fiddler的这些特性,所以用它来调试 ajax 、分析错误报文很是方便。
2、 Fiddler的常用操作
如何安装本文就不多说,windows的安装型软件无非就一直 Next 。
我这里使用 Fiddler4 版本,写博时官方的最新版本。
如果要从官网下载的话,应该要先注册才开放下载。
安装成功后按下图访问有:
表明你已安装成功啦。
下面打开 百度 搜索引擎首页,可以抓到几条请求,第一个就是html的内容请求,第二个是百度logo的请求......
Fiddler的常用分析操作集中在上图中,每一次的 http(s) 的请求和响应,都清晰的记录在列表中,双击可以查看报文内容,提供十多项解析功能对报文进行各种解析,非常直观方便。
3、 支持https解密分析
默认Fiddler是不支持解密 https 的报文内容的,能捕获到报文,但是报文加密了,打开就是一串乱码。如果你是本机测试的话,不妨用Fiddler的证书替换原有的SSL所需的证书。既然使用Fiddler自己的证书,那相当于它自己也那里一把钥匙,随时可以解密报文,看到报文内容。这对于调试来说特别方便。
按如下配置使能https的解析,
选择 Tools -> Telerik Fiddler Options
,设置如下:
再刷新网页可以看到解析出 form 表单的内容了:
最新版的firefox浏览器对证书验证比较严格,前面我替换了证书,估计导致了一些问题,发出如下的警告:
如果你只是测试的话,就点击网页中的 添加例外 按钮,信任一下这个证书,又可以快乐的访问和测试了。
4、 Fiddler的断点调试
Fiddler的断点有两种:请求前断点(Before Request) 和 响应后断点(After Response)。
顾名思义,Fiddler截获到请求暂停、截获到响应暂停。
为什么要暂停呢?就是为了修改请求或响应的报文呀。
开启两种断点的方式如下:
下面演示一下开启请求前断点的例子:
开启断点后,刷新一下百度首页(因为百度网页协议 https 的,若要修改内容的话,就要开启https解密功能),有:
注意到会话的图标是红色的(左上角),因为会话被请求前断点给暂停了,所以出现了类似于程序的断点标识。
切换到 RAW 的tab查看原始数据(如上),把里边的 User-Agent 的值修改为 iPhone 的web标识,如:
Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4
再点击(选中)刚才暂停的会话,接着按住 Shift 键(或者干脆把断点给关了,不然后面还要点击若干次 GO),点击工具栏的 GO ,Fiddler就会把修改后的请求发给百度的服务器,所以你可以看到下面的响应结果:
这是一个手机端的web页面,是的,我们成功篡改了报文内容并达到目的。
小结:
理解工具的原理去使用工具,会感觉工具是我们的左右手,还有更多好用有趣的高级功能待你去发掘。特别是构造报文那一块应该还有许多技巧。
参考文档:
1、Fiddler Documentation
2、Fiddler-工作原理
3、《PHP核心技术与最佳实践》 第4章 PHP网络技术与应用
-end-
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
发表日期:2017年5月20日
使用Fiddler进行http抓包和调试的更多相关文章
- Fiddler和app抓包
1:请在“运行”,即下面这个地方输入certmgr.msc并回车,打开证书管理. 打开后,请点击操作--查找证书,如下所示: 然后输入“fiddler”查找所有相关证书,如下所示: 可以看到,我们找到 ...
- [转载]Fiddler 解析!抓包抓得好真的可以为所欲为 [一]
说起抓包,很多人以为就是用个工具,简简单单地抓一下就可以了.昨天在面试一个安卓逆向,直接告诉我[抓包没有技术含量].在这里,我必须发一个教程,解析一下抓包神器——Fiddler.Fiddler仅仅是一 ...
- 通过Fiddler进行手机抓包
通过Fiddler进行手机抓包 通过Fiddler抓包工具,可以抓取手机的网络通信,但前提是手机和电脑处于同一局域网内(WI-FI或热点),然后进行以下设置: 用Fiddler对Android应用进行 ...
- LoadRunner+Android模所器实现抓包并调试本地服务端
步骤就是 1:新建LR脚本.协议选择Mobile Application - HTTP/HTML 2:在record里选择第三个:Record Emulator........ 3: 选择下一步后, ...
- Fiddler对https抓包时,提示"HTTPS decryption is disabled."原因及破解
Fiddler对https抓包时,提示"HTTPS decryption is disabled." 原因:没有启用 https 解密. 破解: ----------------- ...
- fiddler教程:抓包带锁的怎么办?HTTPS抓包介绍。
点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 介绍Fiddler的HTTPS抓包功能." 这里首先回答下标题中的疑问,fiddler抓包带锁的原因是HTTPS流量抓包功能开启, ...
- Fiddler代理手机抓包
Fiddler代理手机抓包 0. 安装Fiddler 1. 安装HTTPS证书并允许远程连接 Tools - Options 点击OK后重启Fiddler. 确保手机与当前电脑在同一局域网. 然后在手 ...
- web手工项目04-测试报告的核心内容-HTTP请求和响应-fiddler工具进行抓包
回顾 登录功能测试(需求分析(输入分析,处理分析,输出分析),数据构造,编写用例) 测试点设计思路--扩展(相关业务,特殊角度-分支,异常,逆向) 流程图元素与画法(开始/结束,路径,数据,判定,步骤 ...
- 移动端调试和fiddler移动端抓包使用
这里介绍一款移动端的调试工具以及抓包工具fiddler的使用.也是初次接触,算是初次接触的总结. 1,移动端调试工具.手机截图如下 代码实现 <!DOCTYPE html> <htm ...
随机推荐
- nosql使用感受
最近一个项目尝试了使用ssdb(一个类似于redis的数据结构数据库),主要感受有几点: 优势 nosql的无模式在修改和插入时很方便,不需要预先新建表或者修改表结构来新加字段,只需要代码里面使用就行 ...
- 老李秘技:loadrunner11是否还支持dblib协议?
老李秘技:loadrunner11是否还支持dblib协议? Loadrunner11不再支持Sybase CTLIB 和 DBLIB协议 在loadrunner安装文件中找到*. LRP文件,位 ...
- 2017.3.12 H5学习的第一周
本周我开始了H5的学习,在这一周里我们从html的基本标签开始一直讲到了才算css的用法,接下来我将记录下来本周我学到的H5的内容. 首先是声明文档,声明文档类型是HTML5文件,它在HTML文档必不 ...
- JavascriptS中的各结构的嵌套和函数
各位朋友大家好,上周更新给大家分享了JavaScript的入门知识及各种常用结构的用法,那么,本次更新博主就跟大家更深入的聊一聊JS各结构的嵌套用法,及JS中及其常用的一种结构--函数.以下为函数和循 ...
- Spring Boot 学习笔记--整合Redis
1.新建Spring Boot项目 添加spring-boot-starter-data-redis依赖 <dependency> <groupId>org.springfra ...
- swust oj(0088)表达式的转换
表达式的转换(0088) Time limit(ms): 5000 Memory limit(kb): 65535 Submission: 435 Accepted: 93 Accepted 16级卓 ...
- 如何了解您的微软认证情况和MIC ID
- const常量类型
1.定义:const常量类型表示一个”常值变量“,其值是不能被修改的变量.即一旦变量被声明为const类型,编译器将禁止任何试图修改该变量的操作. 2.声明:const <声明数据类型> ...
- 清北Day 2
清北第二天,感受到了来自这个世界的不友善,大概把没听过不会的"名词"记录下来就已经一面了,然后被大佬说这都是最基础的东西,就很皮,那就趁别人练习字符串的题的时候,来写波博客了,倒不 ...
- 利用子集构造法实现NFA到DFA的转换
概述 NFA非有穷自动机,即当前状态识别某个转换条件后到达的后继状态不唯一,这种自动机不便机械实现,而DFA是确定有限状态的自动机,它的状态转换的条件是确定的,且状态数目往往少于NFA,所以DFA能够 ...