欢迎光临散文网 会员登陆 & 注册

第八章 抓包工具:fiddler、charles

2023-06-13 11:58 作者:littersho  | 我要投稿

这两个工具其实差不多,可能操作上不太一样,平常呢使用fiddler比较多,fiddler除了常规的替换http请求、模拟慢网速外,还有一些日常开发里能用到的特殊功能。charles可能比较适合mac

fiddler 是在客户端和服务端之间建立的的 HTTP 代理服务器,能够监听客户端发出的请求和服务端返回的响应结果。当访问网页时,浏览器会通过 HTTP协议向服务端请求资源,当开启 Fiddler 后,HTTP 请求不会直接发送给服务端,而是通过 Fiddler代理进行转发,服务端收到请求进行响应,服务端响应同样会通过 Fiddler代理进行转发。

在安装好Fiddler之后,启动,可以打开菜单栏中的Tools--->options--->Connections

这里有一句Act as system proxy on startup意思就是(在启动时充当系统代理),并且默认监听端口设置为了8888

这里以chrome浏览器为例:

只要fiddler一旦启动并开始监听的时候,就会默认成为系统代理, 所以你的网络请求 也就会被fiddler所抓取到!


一,在工作中的应用

①bug定位:抓取数据分析,区分前后端问题

②断点篡改数据

③弱网测试

④mock数据 

二,fiddler有些手机型号不兼容,怎么办?

检查下手机上有没有什么安全设置,是不是在同一网络下,证书是否生效,fiddler开源代码,它的更新可能比手机啊系统更新要晚一步,所以如果实在抓不到的话,不要死磕,换一台手机进行测试,可以用模拟器,但模拟器跟真机还是不完全一样的,尽量用真机,而且其实接口不太会考虑兼容性,接口正常,能调通就可以了,至于兼容性可以在功能测试时多测试

一、篡改数据

除了抓包之外,Fiddler另一强大的功能莫过于设置断点,设置好抓包断点后,可以改请求的数据包、返回的数据包,伪造请求、返回。

1、如果需要篡改请求参数,则需要在请求前设置断点:

场景一:请求前设置断点,篡改请求参数

步骤1:在浏览器打开目标网址:xx.xx.xx.xx:xxxx/eticket-web/index.html#/login

步骤2:在fiddler中添加主机:

步骤3:设置断点: Rulers –Automatic Breakpoints—Before Requests

步骤4:在目标网页中进行操作:

步骤5:fiddler会话列表中,可以看到这个请求已经被设置了请求前断点,点击该会话,在右侧请求参数中,篡改开票金额

步骤6:点击【Break on Rep】、【Run to Comp】2个按钮,观察响应报文

break on response 用于修改响应
run to completion 完成修改

这边点击raw,修改请求头部分数据,点击run to complete即可。

篡改数据后再向服务器发送请求,请求失败:

2、如果需要篡改响应数据,则需要在请求后设置断点:

场景二:响应后设置断点,篡改响应参数

步骤1:在浏览器打开目标网址:xx.xx.xx.xx:xxxx/eticket-web/index.html#/login

步骤2:在fiddler中设置断点:Rulers –Automatic Breakpoints—After Responses

步骤3:在目标网页上进行正常操作:

先打开目标网址进行登录,然后将fiddler拦截的登录成功的响应信息进行修改:

fiddler拦截的响应信息:

将拦截的响应信息进行修改:

查看目标网址返回的信息

需要注意,使用这种方式所有的请求都会受到影响,为全局断点,使用后需要清除断点:
rules -> automatic point -> disabled

3、根据请求方式设置断点

如输入bpm get,点击回车,在目标网址中进行操作

如果请求方式为get,则fiddler工具会拦截,如图所示:

如果请求方式非get,则fiddler工具不拦截,请求成功,如图所示:

4,局部断点

fiddler还有另一种打断点方式,即单断点。该断点适用于已经知道了某个接口地址的情况下去进行单断点。

请求前断点: bpu

响应后断点:bpafter

1. 针对api设置断点
在命令行输入bpu url 回车
e.g bpu baidu.com/

2. 清除断点

打完断点后,如果不需要用了则在命令行再次输入:bpu或者bpafter并回车即可


二、抓APP的包(小程序同样)

1、确保手机和电脑在同一个局域网(手机连接电脑WiFi)

查看电脑IP

菜单+R 进入控制台,输入cmd

输入指令 ipconfig

找到IPv4地址:

2、抓包工具fiddler要设置允许抓取移动端的包,并设置端口。

tools--options,按图勾选

tools--options--connections

之后要重启fiddler.

3、手机WiFi设置,修改网络,高级选项,代理改为手动,将电脑IP和步骤二设置的端口填进去。

4、代理设置完成,用safari打开服务器,http://192.168.1.5:8888(如果打不开,可以重启fiddler或者下载新版本,在刚用的时候也是打不开,后面重启了fiddler就解决了这个问题),打开后下载证书,下图打箭头处;选择信任,安装即可;

5,在手机上操作APP或小程序,用fiddler抓包,注意body量大的基本就是你想要的;

注意:

1. 在做手机或移动端APP的接口测试时,需要从开发人员那里获取接口文档,接口文档应该包括完整的功能接口、接口请求方式、接口请求URL、接口请求参数、接口返回参数。如果当前项目没有接口文档,则可以使用fiddler对APP进行抓包确认。

2. 在手机上对APP进行操作,然后在Fiddler中可以抓取对应的网络交互信息

3. (一个功能中可能设计多个接口的交互)。在抓取的信息中可以看到接口请求方式、接口请求URL、接口请求参数、接口返回参数。

4. 因为fiddler抓包的原理就是通过代理,所以被测终端需要和安装fiddler的电脑在同一个局域网中。

三、模拟弱网测试

1.为什么要做弱网测试呢?协助开发定位弱网问题,确保App在2G、3G、4G各种网络环境下,每个页面都能打开,都能正常跳转,能完成完整的支付流程、上下架流程。不要轻易弹出“无法连接到网络”,“网络连接超时”,“系统繁忙”等提示

2. 在Fiddler中有弱网测试。我们可以通过Fiddler进行弱网测试。弱网测试就是通过控制上传下载的速度来进行测试

Rules-->Performance-->Simulate Modem Speeds.

在FiddlerScript中找到如下代码进行调整:

3. Ctrl+F查找。跳出上传下载速度。进行调节。Fiddler限速是以网络延迟的方式实现的,网络延迟时间*网速=传输字节数。

Delay sends by 300ms per KB uploaded.说得很明白,延迟发送每上传一个 KB 300毫秒。即1kb/0.3s(10kb/3s)

4. 修改完成后,按ctrl+s保存脚本,在运行脚本,即可限制网速上网了。如下图

5. 然后就可以打开网页抓包查看。

四、抓取HTTPS的包

1. http协议端口是8080.https协议端口则是443,他们使用是完全不同的传输协议。http协议的链接是无状态的;https协议是由ssl+http协议构建可进行加密传输,身份认证的网络协议,他比http协议安全。

2. http是超文本传输协议,信息是明文传输。所以抓http比较容易。

3. https则是具有安全性的ssl加密传输协议。https协议需要到ca申请证书。

fiddler默认是只抓取http协议, 

那么要抓取https协议的会话需要打开配置安装证书才可以,毕竟目前很多网站都是https协议的, 所以在抓包之前,我们还要配置一下证书 否则无法抓包!

操作方法如下:

执行菜单栏中的:Tools---->Options---->HTTPS然后勾选Decrypt HTTPS traffic(解密HTTPS流量)

然后会弹出一个对话框 直接点击YES即可!

或者其他操作步骤:

首先将证书导出到桌面

然后,将证书上传到浏览器

最后,在浏览器打开网页,用fiddler抓包

报错解决:

1、下载不了证书

安装fiddlercertmaker

检查抓包工具版本是不是最新

2、修改响应数据的时候一片空白

要先点击解码,再修改数据,然后点runto completion

3、fiddler启动报错

五,mock数据 

设置AutoResponder能快速模拟返回数据,测试客户端的数据渲染。

将目标接口拖拽到AutoResponder页面中

右键编辑返回的内容

修改相关数据后,点击save按钮保存

接下来勾选Enable rules和勾选需要设置的接口,重新打开浏览器就可以看到内容被修改了

勾选Enable rules的同时,最好也同时勾上Unmatched requests passthrougth,这个选项是不匹配的全部放行。


  • 上面mock的数据是基于抓包数据,你也可以自定义接口返回的文件


第八章 抓包工具:fiddler、charles的评论 (共 条)

分享到微博请遵守国家法律