Fiddler
初识Fiddler,深入理解HTTP协议
shift+F5清除浏览器缓存
Fiddler简介
- Fiddler是位于客户端和服务器端的HTTP代理
- 目前最常用的http抓包工具之一
- 功能非常强大,是web调试的利器
- 监控浏览器所有的HTTP/HTTPS流量
- 查看、分析请求内容细节
- 伪造客户端请求和服务器响应
- 测试网站的性能
- 解密HTTPS的web会话
- 全局、局部断点功能
- 第三方插件
- 场景使用场景
- 接口调试、接口测试、线上环境调试、web性能分析
- 判断前后端bug、开发环境host配置、mock、弱网断网测试
fiddler原理
Fiddler是位于客户端和服务器端的HTTP代理
B/S架构
●编写程序部署到web服务器
●web服务器运行在服务器上,绑定ip地址并监听某端口,接收和处
理http请求
●客户端通过http协议获取服务器上的网页、文档等资源
工作原理
作为系统代理,发送请求或接受响应
我们打开fiddler可以发现fiddler的端口号是8888,他代理了web服务器,也就是说我们的请求和响应都经过了fiddler,他负责转发,所以能监听到。(在浏览器的代理处可以看见,当我们关闭时,不启动代理)
HTTP协议
Hyper Text Transfer Protocol (超文本传输协议)
用于从万维网服务器传输超文本到本地浏览器的传送协议
●HTTP协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输HTML页面的内容。默认端口是80 .
●http是基于请求与响应模式的、无状态的、应用层的协议
下面为http请求构成的两部分:
请求报文
客户端发给服务器,HTTP请求报文主要由请求行,请求头部、空一行、请求正文(请求体)4部分组成。
请求体可以为空,例如get请求
响应回来的也会分四部分:响应状态行,响应头部信息,空一行,响应体
请求行
请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。
请求方法字段
请求方法
请求方法 | 备注 |
---|---|
GET | 请求资源 |
POST | 提交资源 |
HEAD | 获取响应头 |
PUT | 替换资源 |
DELETE | 删除资源 |
OPTIONS | 允许客户端查看服务器的性能 |
TRACE | 回显服务器收到的请求,用于测试或诊断 |
统一资源定位符(URL)
Uniform Resource Locator:统一 资 源定位符
●用于描述网.上的资源
格式: schema:/ /host[:port#]/path/ …/ [?query-string ]
● scheme:协议,如http, https, ftp等
● host:域名或者IP地址
● port: 端口
● path:资源路径
● query-string:发送的参数
资源定位符
http:// test. lemonban.com/ningmengban/images/logo.png
协议
http://
域名
test.lemonban. com 对应主机IP,为了查找主机 cmd命令行可以用ping域名的方式命令查找IP
文件的路径和文件名称
ningmengban/images/logo.png
http版本
目前普遍使用的为1.1版本,即http/1.1
请求头部
请求头可以是任意信息,根据服务器需要进行组合
请求头 | 描述 |
---|---|
Host | 主机ip地址或域名 |
User- Agent | 客户端相关信息,如操作系统、刘览器等信息 |
Accept | 指定客户端接收信息类型,如: image/jpg, text/html, application/json |
Accept-Charset | 替换资源 |
Accept-charaet | 客户端接受的字符集,如gb2312,iso-8859-1 |
Accept-Encoding | 可接受的内容编码,gzip |
Accept-Language | 接受的培言,如Accept-Langunge:zh-cn |
Authorization | 客户瑞提供给服务端,进行权限认证的信息 |
Cookie | 携带的cookie信息 |
Referer | 当前文档的URL,即从哪个链接过来的 |
Content-Type | 请求体内容类型,如Content-Type: application/x www form urlencoded |
Content -Length | 数据长度 |
Cache-Control | 缓存机制,如Cache-Control:no-cache |
Pragma | 防止页面被缓存,和Cache-control:no-cache作用一样 |
请求体
真正发送给服务器的一串文本.
响应报文
服务器返回给客户端,HTTP响应报文主要由状态行,消息头部、空一行、响应体4部分组成。
状态行
请求行由HTTP协议版本字段、状态码字段及其描述3个字段组成,它们用空格分隔。
状态码:用以表示网页服务器HTTP响应状态的3位数字代码
状态码 | 描述 |
---|---|
1XX | 提示信息,请求被成功接收 |
2XX | 成功,请求被成功处理 |
3XX | 重定向相关 |
4XX | 客户端错误 |
5XX | 服务器端错误 |
常用状态码:https://blog.csdn.net/qq_35689573/article/details/82120851
响应头
响应头 | 描述 |
---|---|
Server | HTTP服务器的软件信息 |
Date | 响应报文的时间 |
Expires | 指定缓存过期时间 |
Set-Cookie | 设置Cookie |
Last-Modified | 资源最后修改时间 |
Content-Length | 内容长度 |
Connection | 如:Content-Type:text/html;charset=utf-8 |
Connection | 如keep-Alive,表示保持tcp链接不关闭,不回永久保持链接,服务器可设置 |
Location | 指明重定向的位置,新的URL地址,如304的情况 |
Fiddler工具详解及应用实战
Fiddler工具详解
端口设置
Tools->Options
comments
作用为场景1
replay
重新发送某个请求,快捷键为R,如果想重复发送很多次,按住Shift+R
删除请求
删除某个请求,快捷键为Delete,如果有几个不想被删除,选中几个,按Shift+Delete
断点&开启代理
capturing是是否开启代理
下方的这个空白的,点击一下。第一下是请求前断点,两下是响应后断点。意思是需要上面的GO按钮才能够正常的运行
编码解码转换
会话列表
- Fiddler抓取到的每条http请求(每一条称为一个session)
- 主要包含了请求的ID编号、状态码、协议、主机名、URL、内容类型、body大小、进程信息、自定义备注等信息
命令行
输入help会跳去网站查询。
bpu xxx :会给包含xxx的打上断点,放行通过go放行,再次取消通过bpu取消
?xxx : 高亮含有xxx的
还有 >xxx:代表大于xxx大小的
Statistics (统计)
HTTP请求的性能和其他数据分析,如DNS解析的时间,建立fCP/IP连接的时间消耗等信息
AutoResponder(自动响应器)
AutoResponder可用于拦截某一请求,进行如下操作:
- 重定向到本地的资源
- 使用Fiddler的内置响应自定义响应
Filter过滤器
开启过滤器后,第一个是选择局域网还是广域网
第二个可以选择隐藏对应的主机、只展示对应的主机、标记对应的主机
设置请求头,可以给所有的都加上对应的请求头
断点
全局断点
在rules里面设置,在请求前或者后
局部断点
bpu请求:请求前断点 例如:bpu login 就会阻塞login的请求
再次bpu就取消了
bpafter:响应后断点
模拟网络限速
这个具体的设置可以在下面设置
场景
场景1 给开发人员对应的请求
首先新增备注(comments),然后通过File里面的save,保存成一个个的saz文件,开发人员拿到saz文件打开就能发现请求是啥样的了
场景2 钓鱼网站的简单模拟
通过AutoResponder,响应回去一个网站
场景3 模拟响应
如果我们网站的接口没有开发好,我们怎么创建响应呢
通过AutoResponder,编辑响应
场景4 极端测试
我们不需要去删除数据库的内容,只需要通过AutoResponder,更改响应内容就行了
场景5 黑盒测试
通过Composer能够提交请求,也能够修改请求的内容,知道后端的bug(手机号验证等)
场景6 断点调试
在断点中,把数据更改后的传给服务器。或者更改响应回来的数据。断点还能够模拟网络中断,服务器没收到响应要做出对应的处理
HTTPS及手机APP抓包
捕获HTTPS抓包
- 点击Tools > Fiddler Options >HTTPS
- 勾选Decrypt HTTPS Traffic
抓IOS设备app包
IOS代理设置为fiddler
- 点击Tools > Fiddler Options > Connections.
- 勾选Allow remote computers to connect.
- 重启Fiddler
- 确保防火墙允许 Fiddler进程可以远程连接
- ios设备连接wiFi
- 确保ios设备可以访问到http : / /FiddlerMachineIP:8888 ,该地址会返回Fiddler Echo service页面
抓https
- 在ios设备打开浏览器,访问http: / /l ipv4:8888/Ⅰ
- 点击Fiddler Echo Service页面底部FiddlerRoot certifica载证书
- 打开FiddlerRoot.cer 文件并安装
- 安装成功后,在通用>关于本机>证书信任设置中,信任刚安装的Fiddler证书
- Safari打开https : / / www .baidu.com,已经可以抓取HTTPS白让
抓Andriod设备app包
-
点击Tools > Fiddler Options > Connections.
-
勾选Allow remote computers to connect.
-
在手机上wifi处设置代理,点击代理>手动,设置主机名为Fiddler所在主机的IP,端口为Fiddler监听端口
-
打开Android设备浏览器,访问http://ipv4:8888/
-
点击页面底部FiddlerRoot certificate下载证书
-
打开设置>更多设置>系统安全>加密与凭据>从存储设备安装选择下载好的FiddlerRoot.cer进行安装
浏览器打开https : / / www . baidu.com,已经可以抓取HTTPs包了 -
注意:测试完毕,记得关闭代理,否则手机无法上网