fiddler作为一个程序猿+测试媛必备的工具,其他除了最基本的使用方法之外,还有很多强大到不行小技巧
下面将遇到的一些坑爹的问题或者可以变得更方便的方式列举一下~当然比较小白的问题,比如如何抓手机的包啊这些已经排除在外了哈
这个tunnel to 443也的确是挺不顺眼的,正如stackoverfolw上的回答一样,我们可以看见这样一句话
fiddler截图
解释了为什么会出现这个tunnel。
HttpTuunnel(也叫Http隧道,Http穿梭),是这样一种技术: 它用HTTP协议在要通信的Client和Server建立起一条”Tunnel”,然后Client和Server之间的通信,都是在这条Tunnel的基础之上。
简单地说 fiddler 当做代理转发 https 请求的时候,就会产生 "CONNECT Tunnels",所以大可忽略它。实在有强迫症,可以选择隐藏Rules
> Hide Connects
所以要抓https的包,还必须安装fiddler的证书,果断百度找教程?!去看官网,简直不能再详细了,图文说明~抓https的包get
既然已经能成功抓包了,那最好也了解一下fiddler抓取HTTPS协议原理,以下内容摘自此文——浅谈HTTPS以及Fiddler抓取HTTPS协议
首先看看最基本的https通信,具体的过程就不解释了
普通的https通信
再看下加入了fiddler之后,这个具体的过程就解释下
fiddler中的https通信
这个只要关闭pc的代理就好了呀~
点击 Fiddler 左下角的“Capturing”。其实是File > Capture Traffic的快捷键,可以控制是否把 Fiddler 注册为PC系统代理,当左下角显示Capturing时,Capture Traffic是打开的,此时的IE的Internet选项>连接>局域网设置中的代理服务器是勾选的;否则是没有勾选的。 也就是显示了就抓pc的包,不显示就不抓pc的包。
快捷图标
去官网也有啊,只不过是英文的哈哈,其实用处也不是很大,大概记住就得了
在测试的时候,难免要配置hosts,连接到测试服务器,但是!总感觉在系统配置的hosts不起作用
fiddler reuses connections, so if there was already an established connection, any change to the HOSTS file might not be noticed. You might try hitting CTRL+X to clear the Web Sessions list and the cache of reused connections.
原来Fiddler 启动时,修改 hosts 的时候是无效的,需要重启 Fiddler才能生效。当 Fiddler 已经建立会话时,任何修改 hosts 的行为都不会被 Fiddler 注意到。
那么问题就来了,我怎么确定自己的请求的是正确的服务器呢?
我需要知道自己请求的ip地址是多少,哈哈
想说fiddler比charles更加人性化的地方就是,fiddler有一个FiddlerScript文件,可以修改超级多配置
第一次使用FiddlerScript,点击这里 Rules->Customize Rules,然后回弹出是否安装一个编辑器的插件,安装了的话就可以直接在面板中进行修改,不安装就要每次都在txt文档里面修改,而且还不能保证编码格式是utf-8的
FiddlerScript是用C#写的,但是,有很多注释,还有官网可以帮助学习
1. Modifying a Request or Response 修改请求和响应
OnBeforeRequest is called before each request, and OnBeforeResponse is called before each response.可以在OnBeforeRequest和OnBeforeResponse这两个方法中修改请求和响应
2.Performance Testing 测试应用的表现
To test application performance, add rules using FiddlerScript to the OnBeforeResponse function (except where noted).包括限速、显示服务器响应的时间、显示收到请求的时间等
3.Customize Menus 定制菜单栏
To customize menus in Fiddler, add rules using FiddlerScript with Global scope 添加各种菜单或者rule、tool等选项
4.定制session列表
To customize Fiddler's Web Sessions List or to pause specific sessions, add rules using FiddlerScript to the OnBeforeRequest function 可以在OnBeforeRequest中定制会话列表,将某些会话标记为红色、粗体等等或暂停某些特殊的会话
5.暂停
To pause specific sessions, add rules using FiddlerScript to the OnBeforeRequest function 暂停某些对话,在fiddler就终止发送去服务器那边
6.警告
To create alerts for specific sessions, add rules using FiddlerScript. 对于某些特殊的会话发出警告,例如文件丢失的时候发出声音
7.会话列表中添加列
To add custom columns to the Web Sessions List, add rules using FiddlerScript. 添加客户端端口、cookie的值等等这些列
大致了解FiddlerScript其实就可以做很多修改帮助我们改善fiddler了~
FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP", 120, "X-HostIP");
官网的教程中有写到添加session列表的列
Alternatively, you can call the AddBoundColumn() method. The first parameter is the name with which the column should be named, and the second parameter is the default width of the column. The third parameter is either a Fiddler Session Flag string, an @-prefixed-header name, or a JavaScript function that returns a string.
自己翻译的:第一个参数:显示列的名字, 第二个参数:默认列宽, 第三个参数:显示的数值,比如一个session有哪些属性,或者是一个返回string的方法
再想想可能我还需要添加这个请求来自哪一个客户端?那同样的copy一下代码,把客户端的ip(clientIP)也显示出来了,这样做以后也可以方便看请求是来自哪台机器的,不过需要注意,在重新连上WiFi后,客户端的ip地址随时可能改变
serverIP和clientIP
charles限速可以直接点击UI设置,fiddler限速就要靠强大的FiddlerScript了
oSession["request-trickle-delay" ] = "300";(每上传1KB延迟300ms)
oSession["response-trickle-delay" ] = "150";(每下载1KB延迟150ms)
顺便附上各网络速率表
由于没有限制抓取的host或者其他原因,有的时候会突然间就冒出一堆请求,为了找到自己想要的那条请求也是很靠眼力啊,估计找久了都眼冒金星了吧
如果可以将经常测试的请求分开颜色显示,那真的是极好的啊!
代码中的sample
具体颜色的数值就上网找C#的color表,对应设置即可
应用之后不同的请求就可以使用不同的颜色标记
科科,我设置的有点花,只是为了展示而已啦...
好吧,还是直接上这篇博文先,当然了官网文档还是很多很多介绍,不过用的比较多的,都在文章里已经说了,都是基础的查找等功能,官网上很多其他的命令主要跟断点debug相关。
不过博文中说到的双击session就能直接查看json数据,感觉还是蛮爽的,虽然并不知道
PREFS SET fiddler.ui.inspectors.response.alwaysuse “json”
这行代码是怎么出现的,一度好纠结,在官网上查找关键词并没有找到相关的东西,去搜索之后发现一个fiddler源码,里面有出现fiddler.ui.inspectors.response.alwaysuse
,其他发现就木有了
同样作为牛逼的抓包软件,吐槽几个优缺点
fiddler还有很多诸如AutoResponder、断点调试的功能,不过这些大部分是web工程师的大爱,测试方面暂时不需要用到,所以就没有深入去研究啦~有机会再好好研究
作者:刘瞧瞧
链接:https://www.jianshu.com/p/18b9c5cb493d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。