Fiddler个人学习资料
Fiddler简介
- Fiddler是位于客户端和服务器端的HTTP代理
- 目前最常用的http抓包工具之一
- 功能非常强大,是web调试的利器
- 简单的接口测试工具,或者发包工具
●监控浏览器所有的HTTP/HTTPS流量
●查看、分析请求内容细节
●伪造客户端请求
●测试网站的性能
●解密HTTPS的web会话
●全局、局部断点功能
●第三方插件 - 使用场景
●接口调试、接口测试、线上环境调试、web性能分析
●判断前后端bug、开发环境hosts配置、mock、弱网断网测
B/S架构
- 编写程序部署到web服务器
- web服务器运行在服务器上,绑定ip地址并监听某端口,接收和处理http请求
- 客户端通过http协议获取服务器上的网页、文档等资源
HTTP
- Hyper Text Transfer Protocol超文本传输协议
- 用于从万维网服务器传输超文本到本地浏览器的传送协议
- HTTP协议是基于TCP的应用层协议,主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输HTML页面的内容
- 默认端口是80
- http是基于请求与响应模式的、无状态的、应用层的协议
- 完整的HTTP协议包含请求和响应两块内容
HTTP请求报文
- HTTP请求报文主要由请求行、请求头部、空一行、请求正文(请求体)4部分组成。
请求方法
请求方法 | 备注 |
---|---|
GET | 请求资源 |
POST | 提交资源 |
Head | 获取响应头 |
PUT | 替换资源 |
DELETE | 删除资源 |
URL
- Uniform Resource Locator:统一资源定位符用于描述网上的资源
- 格式: schema:/ /host [:port#]/path/ …/[?query-string]
●scheme:协议,如http,https,ftp等
●host:域名或者IP地址
●port:端口
●path:资源路径
●query-string:发送的参数 - 如:https://www.baidu.com/s?wd=qq
请求头
请求头 | 描述 |
---|---|
Host | 主机ip地址或城名 |
User- Agent | 客户端相关信息,如果操作系统、浏览器等信息 |
Accept | 指定客户端接收信息类型,如:imag/jpg, text/html, appication/ json |
Accept-Charset | 客户端按受的字符集,如lgb2312、iso-8059-1 |
Accept-Encoding | 可接受的内容编码,如gzip |
Accept - Language | 接受的语言,如Accept Language: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响应报文
状态码
- 用以表示网页服务器HTTP响应状态的3位数字代码
状态码 | 描述 |
---|---|
1XX | 提示信息,请求被成功接收 |
2XX | 成功,请求被成功处理 200 |
3XX | 重定向相关 304(比如缓存) |
4XX | 客户端错误 404 |
5XX | 服务器端错误 500 |
建议:深度学习状态码可百度“HTTP状态码”学习
响应头部
响应头 | 描述 |
---|---|
Server | HTTP服务器的软件信息 |
Date | 响应报文的时间 |
Expires | 指定缓存过期时间 |
Set -Cookie | 设置Cookie |
Last-Modified | 资源最后修改时间 |
Content-Type | 响应的类型和字符集,如:Content-Type:text/html;charset=utf-8 |
Content-Length | 内容长度 |
Connection | 如Keep-Alive,表示保持tcp连接不关闭,不会永久保持连接,服务器可设置 |
Location | 指明重定向的位置,新的URL地址,如304的情况 |
Fiddler工具
- 1.添加备注
- 2.数据重放:重复请求接口。快捷键R;Shift+R可以设置重放次数
- 3.删除
- 4.转到:配合断点
- 5.数据流(流模式):原本服务器返回内容到fiddler再统一一起发到客户端,数据流就是正常服务器一返回就到直接到客户端
- 6.解码:包解码
- 7.保持:设置保持会话数量
- 8.任意进程:选择抓取应用
- 9.查找:Ctrl+F
删除单个请求:delete
删除除此以外的的请求:Shift+delete
全部删除:Ctrl+x
会话列表
- Fiddler抓取到的每条http请求(每一条称为一个session)
- 主要包含了请求的ID编号、状态码、协议、主机名、URL、内容类型、body大小、进程信息、自定义备注等信息
快速执行命令
命令网址:https://docs.telerik.com/fiddler/knowledgebase/quickexec
或者可以在命令行打:help
如: bpu:断点—bpu baidu
辅助标记和工具
-
Statistics (统计)
●HTTP请求的性能和其他数据分析,如DNS解析的时间,建立TCP/IP连接的时间消耗等信息
-
Inspectors(检查器)
●Inspectors意思是检查器
●可以多种方式查看请求的请求报文和响应报文相关信息
-
AutoResponder (自动响应器)
●AutoResponder可用于拦截某一请求,进行如下操作:
●重定向到本地的资源
●使用Fiddler的内置响应
●自定义响应
Composer(组合器)
- 用于设计一个请求报文,并可以执行
- 最小成本发包,检查后端设计,检查程序
Filters(过滤器)很强大,好好用
断点–可测试前后端
- bpu-请求前断点—bpu baidu
- bpafter-响应后断点—bpafter baidu
Fiddler抓包
●点击Tools > Fiddler Options > HTTPS
●勾选Decrypt HTTPS Traffic
设置Fiddler捕获Https流量
FireFox的Https流量–证书
- 用火狐要配置高级里面的证书
*APP抓包
- iOS设备APP抓包-Fiddler设置
●点击Tools > Fiddler Options > Connections.
●勾选Allow remote computers to connect
●重启Fiddler
●确保防火墙允许Fiddler进程可以远程连接
●ios设备连接WiFi
●确保ios设备可以访问到http://FiddlerMachineIP:8888,该地址会返回Fiddler Echo Service 页面
- Android设备抓包
●以小米9为例,打开设置> WLAN >连接上的WLAN设置
●点击代理>手动,设置主机名为Fiddler所在主机的IP,端口为Fiddler监听端口
●打开Android设备浏览器,访问http://ipv4:8888/ (192.168.89.8888/)
●点击页面底部FiddlerRoot certificate下载证书
●打开设置>更多设置>系统安全>加密与凭据>从存储设备安装
●选择下载好的FiddlerRoot. cer进行安装
●浏览器打开https://www.baidu.com,已经可以抓取HTTPS包了
注意:测试完毕,记得关闭代理,否则手机无法上网