fiddler抓包常用功能

Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,Fiddler包含了一个强大的基于事件脚本的子系统,并且能使用.net语言进行扩展。你对HTTP 协议越了解, 你就能越掌握Fiddler的使用方法。你越使用Fiddler,就越能帮助你了解HTTP协议。Fiddler无论对开发人员或者测试人员来说,都是非常有用的工具。


1 为什么要用抓包工具?什么时候会选择抓包?
抓包工具可以协助测试与开发人员去定位问题,从而减轻工作量,节约时间成本

1、 不知道接口的请情况下
答:抓包可以获取url,请求方式,请求参数和相应值

2、 抓包还可以定位问题
答:我们可以查看此接口的参数和返回值。若参数传错,bug提个前端;若响应异常,没有调通后台接口;若有响应,响应值错误,bug提给后端

3、 查看接口的安全性
支付订单的时候,fiddler请求前断点,修改5000元为50元,造成数据串改,不安全。用户登录的时候,截取接口查看入参,可以看到具体的用户名、密码,不安全。所以通过fiddler或者F12可以查看接口安全性,做到把敏感数字**显示更安全。

2 了解的都有那些抓包工具?这些工具有那些优缺点?哪个更适合我们使用?
1、 Fiddler抓包工具,是客户端和服务端的http代理,客户端所有的请求都要先经过fiddler,到响应的服务端,然后端返回的所有数据也都要经过fiddler,Fiedler我们可以用来抓包,修改请求,响应参数,弱网测试等fiddler也是我们最常用的抓包工具之一

2、 Charles(花瓶)抓包工具也是比较常用的,和fiddler差不多,请求接口和返回数据的显示方式不一样,Charles是树状结构比较清晰,fiddler是按照时间倒叙排的

3、 Jmeter工具,jmeter也是可以进行抓包的,除了抓包,接口测试,性能测试也都不在话下,使用jmeter之前需要安装jdk

我不常用:
4、 Firebug抓包工具是浏览器firefox浏览器自带插件,支持很多种浏览器,直接按f12,和chrome与ie中自带的F12一样的,用起来比较方便
5、 Httpwatch抓包工具是强大的网页数据分析工具,安装简单,不需要设置代理和证书,但只能看不能修改,,集成在Internet Explorer工具栏


Fiddler安装与使用(以安卓模拟器为例)

如果利用Fiddler和安卓模拟器抓https包,步骤一共五大步: (手机直接抓包只需要1、4步骤)

1.配置fiddler

2.安装模拟器

3.配置模拟器的代理

4.下载安装fiddler证书

5.如果有特殊要求,需要开发打包

一:配置fiddler

  > fiddler   ----> Tools   -----> Fiddler Options 

  在【Connection】面板里将Allow remote computers to connect勾选,设置端口号【默认为8888,可修改其他端口号】;点击【OK】按钮,关闭Fiddler并重新打开Fiddler

  fiddler设置监听端口号,必须重启fiddler才能生效

在这里插入图片描述
在 HTTPS 面板里勾选CaptureHTTPS CONNECTs,点击Actions,勾选Decrypt HTTPS traffic和Ignore servercertificate errors两项,点击OK(首次点击会弹出是否信任fiddler证书和安全提示,直接点击yes就行)
在这里插入图片描述
二 安装模拟器:

~~安装逍遥模拟器或雷电模拟器(某些模拟器不支持代理),其他略~~ 

三 配置模拟器:

(正常来说无需开启VT设置)

逍遥模拟器: 找到模拟器中 ----- 设置 ----> WLAN打开如下页面

在这里插入图片描述
左键长按 [MEmuWiFi] 会弹出如下选项
在这里插入图片描述
点击 修改网络
在这里插入图片描述
雷电模拟器: 默认网络为打开状态。 若打开模拟器后,右上角无wifi图标显示,可设置打开。(打开后可能需要重启)
在这里插入图片描述
在这里插入图片描述
鼠标移到这里再放开,点击wifi图标
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

四:下载安装fiddler证书

完成后进入模拟器,打开浏览器(整个设置中必须保证fiddler一直打开)

浏览器中输入http://ip:端口号(ip为安装fiddler的主机ip,端口为fiddler设置时的端口)
在这里插入图片描述
然后会跳转到证书下载页
在这里插入图片描述
点击下载之后,安装证书并起个名字,随便写就行,点击确定
要求设置一个手机密码,自己设置一个,记住你的密码,下一次打开会让输入的,否则打不开模拟界面
在这里插入图片描述
安装成功后,此时在模拟器中操作即可在fiddler中抓取到对应的http和https的包

测试:模拟器的浏览器输入 https://www.taobao.com
在这里插入图片描述
fiddler抓包:

在这里插入图片描述
五:如果有特殊要求,需要开发打包


– 利用fiddler在PC端抓包的设置与安卓端类似。
–利用fiddler在真实手机抓包:
wifi:装了fiddler的电脑与手机为同一网域
a、在wifi里绑定代理
在这里插入图片描述
b、绑完代理后下载证书,在手机自带浏览器里输入 10.107.123.1:8888(自己电脑的IP:8888),点击最后一个标红的链接进行下载(正常的情况下)

在这里插入图片描述
如果在下载证书的时候遇到下图的异常情况,点击查看“显示详细信息”,点击“访问此网站”忽略这个安全提醒,继续访问 安装证书
在这里插入图片描述
在这里插入图片描述
c、下载后设置里进行信任证书(ios需要在下图里2个地方进行信任,安卓手机下载后就去安装,基本不会有多余的操作)
在这里插入图片描述

在这里插入图片描述
d、信任后证书后,扫码安装app, 启动app,如果ios手机出现下图情况,这个是app验证,你关掉wifi使用移动网络,点击启动app,一次不行点击2次,可以进入app后,再使用WIFI,

也可以通过关闭绑定的代理,启动app验证,验证通过后,再绑定代理,(为了方便选择第一种方法吧)

在这里插入图片描述
e、再次使用wifi后,启动app, 登录账号如果不能登录,大概率是环境还没有切换过来,这时你可以选择休息一会,然后杀掉进程再重新启动app

f、到这里,绑定了代理,下载了证书,确保是测试环境、账号和密码正确(回归环境)就100%可以登录了

再次附上关闭代理操作,如图
在这里插入图片描述
再次叮嘱:如果换个人提供环境,拿到别人的代理ip和端口,需要安照步骤3再来一遍


fiddler具体功能:
在这里插入图片描述
在这里插入图片描述

抓包:
(1)查看HTTPS对应的接口、与页面的对应

以统一工作平台APP为例:注意staging环境

比如可以抓到验证码:
在这里插入图片描述
双击url,Json格式可以看到该url对应哪个接口:
在这里插入图片描述
(2)mock返回

mock某个字段:(修改response数据)

先双击,要想修改,右面的黄条条一定要点掉的:
然后把链接拉到AutoResponder,删掉前缀 Method:POST EXACT
在这里插入图片描述

在这里插入图片描述
一般勾前三个或全勾:
在这里插入图片描述
右键–Edit response,可以 修改。save后:刷新想要mock的页面查看:
在这里插入图片描述
和这样做一样:

----修改response数据,不打断点:

选中序号16记录,右击-勾选“Unlock fo Editing”
在这里插入图片描述
选择Fiddler右侧reponse块下的TextView,这里修改title,如图:
在这里插入图片描述
去掉“Unlock for Editing”------ 再选择右侧上方的AutoResponder,勾选下方的checkbox选框,并将序号16托到下方—注意:直接拖,可以不用删掉url的前缀 Method:POST EXACT:
在这里插入图片描述
回到浏览器,刷新页面,如图,标题变为上面改的内容
在这里插入图片描述

(3)打断点 / 修改 response 数据
—图标:直接点左下方这个位置:

在这里插入图片描述
—单个断点:使用命令

已经知道了某个接口的请求地址,这时候只需要针对这一条请求打断点调试
在这里插入图片描述
bpu url

取消断点,在命令行输入: bpu 回车就可以了( 或者打空格再回车应该也可以?)

----全局断点(并修改 response 数据):请求前打断点–得一个一个run,点击Go按钮走下一步:(清除断点:disabled)

----步骤:

点击菜单栏按钮【Rules】—【automatic Breakpoints】-【After Response】
在这里插入图片描述
在这里插入图片描述
在TextView改数据:

在这里插入图片描述
改动的时候Transformer的选项是None(只读时 Chunked Transfer-Encoding 是打钩的)
在这里插入图片描述
改完 Go 运行,刷新页面,数据就被改了
在这里插入图片描述

----可以mock为这些HTTP类型,

可以选择js文件(如果检验不到内容也会报错,页面502之类的)

在这里插入图片描述

在这里插入图片描述

-----mock request

方法1:打断点

在这里插入图片描述
刷新页面调该接口,和上面response差不多,可以修改入参,然后run它
在这里插入图片描述
断点完记得释放:bpu 空格

方法2:
在这里插入图片描述
在这里插入图片描述
application/x-www-form-urlencoded 与 multipart/form-data 的区别

UrlRequest中的contentType默认值为 application/x-www-form-urlencoded。它是默认的内容编码类型,一般可以用于所有的情况,但是在传输比较大的二进制或者文本数据时效率极低。

而对于 FileReference.upload() 请求的内容类型,将自动设置为 multipart/form-data 并忽略 contentType 属性的值。可以用来上传文件或者二进制数据和非ASCII数据

(4)过滤

只看一个接口———过滤host(封号分隔)、 过滤url(空格分隔):

在这里插入图片描述
过滤url:
在这里插入图片描述

(5)插件–方便查看脚本–:如查看IP、高亮等----https://blog.csdn.net/amrenyu/article/details/80745674

方式一:通过【Rules】->【Customize Rules】 打开Fiddler ScriptEditor https://cloud.tencent.com/developer/news/270957

快捷键:Ctrl+R

方式二:通过右侧菜单“FiddlerScript”Tab页进入FiddlerScript编辑器

在这里插入图片描述

高亮:https://www.cnblogs.com/pachongshangdexuebi/p/6589899.html

IP:找到main()方法,在里面添加如下代码。

FiddlerObject.UI.lvSessions.AddBoundColumn(“Server”,50,"@response.server");
FiddlerObject.UI.lvSessions.AddBoundColumn(“HostIP”,50,“x-hostIP”);

(6)查看接口–my
在这里插入图片描述

(7)安装Fiddler后浏览器请求被拦截无法上网问题

图一:勾选可对APP抓包,但不能上外网;

图二:不勾选则反;

图三:简便方法–左下角capturing–抓包,不capturing–不抓包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
capturing 抓电脑的包,关掉后只抓手机的包

(8)关于抓包的一些问题

----先看PC端fiddler的如上设置,是否可以正常抓包

----查看手机代理是否正确:IP && 端口(如果8888端口冲突也可以尝试换一下端口号)

----注意SwitchHosts环境:测试环境-----这里注意IP不正确时会报503错误(下图)----可能最多的情况是,后端修改了IP地址但本地host没有刷新导致连接不到服务器,这种情况APP或网址都打不开或者登录不了
在这里插入图片描述
----IOS设备往往需要查看证书 && 软件是否验证 (测APP步骤)

----如果只能抓HTTP的包,不能抓HTTPS:需要删除all证书(本机fiddler根目录的 certmgr.msc + fiddler的)百度…(删除证书时的目录:D:\Users\jayla.wu\AppData\Roaming\Microsoft\Crypto\RSA)

可能需要下载 fiddlercertmaker.exe / FiddlerCertMaker (1).exe

可能需要删了fiddler重装:FiddlerSetup_5.0.20204.45441.exe

fiddler官网有:https://www.telerik.com/fiddler/add-ons

(9)fiddler抓包 443 请求不到数据 ---- https://www.cnblogs.com/linyufeng/p/13689395.html
在这里插入图片描述
在这里插入图片描述



var hosts = 'zkd.me develop.dog';
FiddlerApplication.Log.LogFormat("Logger session {0}, Url: {1}, isHttps: {2}, port: {3}", oSession.id, oSession.fullUrl, oSession.isHTTPS, oSession.port);
if (hosts.indexOf(oSession.host) > -1) {
    FiddlerApplication.Log.LogFormat("Capture session {0}, Url: {1}, isHttps: {2}, port: {3}", oSession.id, oSession.fullUrl, oSession.isHTTPS, oSession.port);
    if (oSession.HTTPMethodIs('CONNECT')) {
        FiddlerApplication.Log.LogString('create fake tunnel response');
        oSession['x-replywithtunnel'] = 'FakeTunnel';
        return;
    }

    if (oSession.isHTTPS) {
        FiddlerApplication.Log.LogString('switch https to http request');
        oSession.fullUrl = oSession.fullUrl.Replace("https://", "http://");
        oSession.port = 80;
    }

    FiddlerApplication.Log.LogFormat("Processed session {0}, Url: {1}, isHttps: {2}, port: {3}", oSession.id, oSession.fullUrl, oSession.isHTTPS, oSession.port);
}
FiddlerApplication.Log.LogFormat("Logger session {0}, Url: {1}, isHttps: {2}, port: {3}", oSession.id, oSession.fullUrl, oSession.isHTTPS, oSession.port);

(10)fiddler抓PC的包

fiddler在https–options设置里,把证书导出来,浏览器添加该证书。

这样会使PC要想打开页面必须先打开fiddler。

(11)charles

与 IP:8888 意思相同,手机安装证书需要先和Charles设置的IP和端口一致,连代理后,手机端输入chls.pro/ssl

该步骤来源:https://www.jianshu.com/p/551711c121f0

Charles全教程:https://blog.csdn.net/u012486840/article/details/106593213?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2.control

  • 15
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值