Fiddler

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协议获取服务器上的网页、文档等资源

img

工作原理

作为系统代理,发送请求或接受响应

在这里插入图片描述

我们打开fiddler可以发现fiddler的端口号是8888,他代理了web服务器,也就是说我们的请求和响应都经过了fiddler,他负责转发,所以能监听到。(在浏览器的代理处可以看见,当我们关闭时,不启动代理)

HTTP协议

Hyper Text Transfer Protocol (超文本传输协议)
用于从万维网服务器传输超文本到本地浏览器的传送协议
●HTTP协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输HTML页面的内容。默认端口是80 .
●http是基于请求与响应模式的、无状态的、应用层的协议
下面为http请求构成的两部分:

请求报文

客户端发给服务器,HTTP请求报文主要由请求行,请求头部、空一行、请求正文(请求体)4部分组成。

在这里插入图片描述

请求体可以为空,例如get请求

响应回来的也会分四部分:响应状态行,响应头部信息,空一行,响应体

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r44MkVeu-1619576908965)(C:\Users\yyyzl\AppData\Roaming\Typora\typora-user-images\image-20210427114934026.png)]

请求行

请求行由请求方法字段、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

响应头
响应头描述
ServerHTTP服务器的软件信息
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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pI3bFftk-1619576908967)(C:\Users\yyyzl\AppData\Roaming\Typora\typora-user-images\image-20210427154205684.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2aiiifKe-1619576908970)(C:\Users\yyyzl\AppData\Roaming\Typora\typora-user-images\image-20210427154225936.png)]

comments

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ed7L5sjB-1619576908973)(C:\Users\yyyzl\AppData\Roaming\Typora\typora-user-images\image-20210427155618661.png)]

作用为场景1

replay

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eEAYx9iM-1619576908975)(C:\Users\yyyzl\AppData\Roaming\Typora\typora-user-images\image-20210427155657134.png)]

重新发送某个请求,快捷键为R,如果想重复发送很多次,按住Shift+R

删除请求

删除某个请求,快捷键为Delete,如果有几个不想被删除,选中几个,按Shift+Delete

断点&开启代理

capturing是是否开启代理

下方的这个空白的,点击一下。第一下是请求前断点,两下是响应后断点。意思是需要上面的GO按钮才能够正常的运行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2l3ytumH-1619576908976)(C:\Users\yyyzl\AppData\Roaming\Typora\typora-user-images\image-20210427160504198.png)]

编码解码转换

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hKpMxEcN-1619576908977)(C:\Users\yyyzl\AppData\Roaming\Typora\typora-user-images\image-20210427162305387.png)]

会话列表
  • Fiddler抓取到的每条http请求(每一条称为一个session)
  • 主要包含了请求的ID编号、状态码、协议、主机名、URL、内容类型、body大小、进程信息、自定义备注等信息
命令行

输入help会跳去网站查询。

bpu xxx :会给包含xxx的打上断点,放行通过go放行,再次取消通过bpu取消

?xxx : 高亮含有xxx的

还有 >xxx:代表大于xxx大小的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yxT4TmYp-1619576908978)(C:\Users\yyyzl\AppData\Roaming\Typora\typora-user-images\image-20210427164108715.png)]

Statistics (统计)

HTTP请求的性能和其他数据分析,如DNS解析的时间,建立fCP/IP连接的时间消耗等信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A0ZZT1iu-1619576908979)(C:\Users\yyyzl\AppData\Roaming\Typora\typora-user-images\image-20210427165456587.png)]

AutoResponder(自动响应器)

AutoResponder可用于拦截某一请求,进行如下操作:

  • 重定向到本地的资源
  • 使用Fiddler的内置响应自定义响应

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EjNWbiGy-1619576908980)(C:\Users\yyyzl\AppData\Roaming\Typora\typora-user-images\image-20210427192818304.png)]

Filter过滤器

开启过滤器后,第一个是选择局域网还是广域网

第二个可以选择隐藏对应的主机、只展示对应的主机、标记对应的主机

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QKMq9FeO-1619576908981)(C:\Users\yyyzl\AppData\Roaming\Typora\typora-user-images\image-20210427201222706.png)]

设置请求头,可以给所有的都加上对应的请求头

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vU0dX2fd-1619576908983)(C:\Users\yyyzl\AppData\Roaming\Typora\typora-user-images\image-20210427201731546.png)]

断点
全局断点

在rules里面设置,在请求前或者后

局部断点

bpu请求:请求前断点 例如:bpu login 就会阻塞login的请求

再次bpu就取消了

bpafter:响应后断点

模拟网络限速

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1ngNBrtS-1619576908983)(C:\Users\yyyzl\AppData\Roaming\Typora\typora-user-images\image-20210427204435120.png)]

这个具体的设置可以在下面设置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2qCPqwIt-1619576908984)(C:\Users\yyyzl\AppData\Roaming\Typora\typora-user-images\image-20210427204807768.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b0n8qKce-1619576908985)(C:\Users\yyyzl\AppData\Roaming\Typora\typora-user-images\image-20210427204743073.png)]

场景

场景1 给开发人员对应的请求

首先新增备注(comments),然后通过File里面的save,保存成一个个的saz文件,开发人员拿到saz文件打开就能发现请求是啥样的了

场景2 钓鱼网站的简单模拟

通过AutoResponder,响应回去一个网站

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2rXQ9j4s-1619576908986)(C:\Users\yyyzl\AppData\Roaming\Typora\typora-user-images\image-20210427193546890.png)]

场景3 模拟响应

如果我们网站的接口没有开发好,我们怎么创建响应呢

通过AutoResponder,编辑响应

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-78bNG3KZ-1619576908987)(C:\Users\yyyzl\AppData\Roaming\Typora\typora-user-images\image-20210427193922414.png)]

场景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包了

  • 注意:测试完毕,记得关闭代理,否则手机无法上网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值