fiddler小技巧

fiddler作为一个程序猿+测试媛必备的工具,其他除了最基本的使用方法之外,还有很多强大到不行小技巧

下面将遇到的一些坑爹的问题或者可以变得更方便的方式列举一下~当然比较小白的问题,比如如何抓手机的包啊这些已经排除在外了哈

一、tunnel to 443 是什么鬼!

这个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通信

Fiddler截获客户端发送给服务器的HTTPS请求,Fiddler伪装成客户端向服务器发送请求进行握手 。

服务器发回相应,Fiddler获取到服务器的CA证书, 用root证书公钥进行解密, 验证服务器数据签名, 获取到服务器CA证书公钥。然后Fiddler伪造自己的CA证书, 冒充服务器证书传递给客户端浏览器。

与普通过程中客户端的操作相同,客户端根据返回的数据进行证书校验、生成密码Pre_master、用Fiddler伪造的证书公钥加密,并生成HTTPS通信用的对称密钥enc_key。

客户端将重要信息传递给服务器,又被Fiddler截获。Fiddler将截获的密文用自己伪造证书的私钥解开, 获得并计算得到HTTPS通信用的对称密钥enc_key。Fiddler将对称密钥用服务器证书公钥加密传递给服务器。

与普通过程中服务器端的操作相同,服务器用私钥解开后建立信任,然后再发送加密的握手消息给客户端。

Fiddler截获服务器发送的密文,用对称密钥解开,再用自己伪造证书的私钥加密传给客户端。

客户端拿到加密信息后,用公钥解开,验证HASH。握手过程正式完成,客户端与服务器端就这样建立了“信任”

二、不想被pc上一堆杂七杂八的session打扰,我只想安静的看关于Android的session

这个只要关闭pc的代理就好了呀~

点击 Fiddler 左下角的“Capturing”。其实是File > Capture Traffic的快捷键,可以控制是否把 Fiddler 注册为PC系统代理,当左下角显示Capturing时,Capture Traffic是打开的,此时的IE的Internet选项>连接>局域网设置中的代理服务器是勾选的;否则是没有勾选的。 也就是显示了就抓pc的包,不显示就不抓pc的包。

三、认识fiddler中session的快捷图标

快捷图标

官网也有啊,只不过是英文的哈哈,其实用处也不是很大,大概记住就得了

四、hosts的设置

在测试的时候,难免要配置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 注意到。

可以通过 Fiddler 的 Tools > HOSTS 处导入本地的 hosts文件。

需要指测试服务器的时候,勾选"Enable remapping of requests for one host to a different host or IP, overriding DNS",否则去掉勾选。

那么问题就来了,我怎么确定自己的请求的是正确的服务器呢?

我需要知道自己请求的ip地址是多少,哈哈

五、FiddlerScript

想说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了~

六、session中显示服务器ip列

打开脚本编辑器

查找“static function Main()”字符串,然后添加下面这行代码:

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的方法

左上角点击保存

然后查看数据的最后一列,出现server ip,把server ip挪动到自己想要看到的地方,大功告成!

再想想可能我还需要添加这个请求来自哪一个客户端?那同样的copy一下代码,把客户端的ip(clientIP)也显示出来了,这样做以后也可以方便看请求是来自哪台机器的,不过需要注意,在重新连上WiFi后,客户端的ip地址随时可能改变

serverIP和clientIP

七、听说fiddler可以限速?

charles限速可以直接点击UI设置,fiddler限速就要靠强大的FiddlerScript了

打开脚本编辑器

搜索m_SimulateModem

然后根据自己的需要修改如下语句

oSession["request-trickle-delay"] ="300";(每上传1KB延迟300ms)oSession["response-trickle-delay"] ="150";(每下载1KB延迟150ms)

Save Script后,勾选rule-performance-Simulate Modem Speeds生效

顺便附上各网络速率表

七、session都是一个颜色啊,看的我眼花,能不能让我一眼就看到你?

由于没有限制抓取的host或者其他原因,有的时候会突然间就冒出一堆请求,为了找到自己想要的那条请求也是很靠眼力啊,估计找久了都眼冒金星了吧

如果可以将经常测试的请求分开颜色显示,那真的是极好的啊!

打开脚本编辑器

找到OnRequestBefore这个方法就能看到sample了

代码中的sample

具体颜色的数值就上网找C#的color表,对应设置即可

保存,应用!

应用之后不同的请求就可以使用不同的颜色标记

科科,我设置的有点花,只是为了展示而已啦...

八、QuickExec用起来

好吧,还是直接上这篇博文先,当然了官网文档还是很多很多介绍,不过用的比较多的,都在文章里已经说了,都是基础的查找等功能,官网上很多其他的命令主要跟断点debug相关。

不过博文中说到的双击session就能直接查看json数据,感觉还是蛮爽的,虽然并不知道

PREFSSETfiddler.ui.inspectors.response.alwaysuse“json”

这行代码是怎么出现的,一度好纠结,在官网上查找关键词并没有找到相关的东西,去搜索之后发现一个fiddler源码,里面有出现fiddler.ui.inspectors.response.alwaysuse,其他发现就木有了

九、与charles的区别

同样作为牛逼的抓包软件,吐槽几个优缺点

fiddler可以通过修改FiddlerScript达到更多的目的,charles不能

charles要花钱,否则每半个小时就要重启一次,还要延时,fiddler免费

平台性,charles是跨平台的(Windows、mac、Linux),fiddler只能在Windows、Linux中使用

十、More

fiddler还有很多诸如AutoResponder、断点调试的功能,不过这些大部分是web工程师的大爱,测试方面暂时不需要用到,所以就没有深入去研究啦~有机会再好好研究

文/刘瞧瞧(简书作者)

原文链接:http://www.jianshu.com/p/18b9c5cb493d

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • fiddler作为一个程序猿+测试媛必备的工具,其他除了最基本的使用方法之外,还有很多强大到不行小技巧 下面将遇到...
    刘瞧瞧阅读 11,420评论 4 15
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,099评论 18 139
  • 前言fiddler是一个很好的抓包工具,默认是抓http请求的,对于pc上的https请求,会提示网页不安全,这时...
    胖子爱猪蹄阅读 11,951评论 4 22
  • 本文部分内容参考果壳网对HTTPS的介绍,这里是原文链接:http://www.guokr.com/post/11...
    OliverGao阅读 3,723评论 3 29
  • 冬季里淋的第一场雨,撒的痛快,淋的舒畅,既是洗净尘埃,也在浇灌心灵。你我本相识相知,是我经不住大千诱惑,早已物是人...
    e4901c10da8b阅读 161评论 0 1