Fiddler学习总结

1.B/S架构和请求过程理解

Broswer/Server

2. Fiddler原理

谷歌,ie默认读的是系统代理,只要打开fiddler,就是自动生成代理,端口8888。

HTTP协议超文本传输协议,从万维网服务器上传输资源到本地浏览器的传输协议,是一个高层协议,不需要关注tcp底层资源,它是一种标准,采用某种约定的规则,以这个规范向服务器请求,服务器才会向你response。

一个完整的HTTP请求:

请求报文:

请求行,请求头,空一行,请求正文(请求体)。

请求方法:GET, POST,PUT

请求的地址:统一资源定位符url,资源的绝对路径

请求头:发起这个请求附加的一些信息

             host:主机是啥

             accept:text/html就是告诉服务器需要传回的是text/html的格式

             User-Agent:使用的浏览器或者手机电脑的系统版本是什么

             cookie:携带了一个cookie带服务器

响应报文:

响应行,响应头,空一行,响应正文(响应体)。

1.响应行:   状态码:200成功,04:比如已经从服务器请求了一次,再次请求的时候,服务器就不会再有响应体,会直接拿到响应,就会显示304,not modified,没有修改过。404:造一个404,利用filter,block css。

2.响应头:

[if !vml]

[endif]

3.空一行

4.响应体:可以是任何形式,jsaon,html,文本,xml

               做接口测试的时候可以用响应体来看,这次请求有没有被正常处理

3. Fiddler工具栏

GO:

用在断点中间,让我们的程序在某一个地方停下来,关注数据

[if !vml]

[endif]

全局断点:直接点击空白处,也就是请求前断点,请求还没有发送到服务器,只有请求,没有响应,点击go,才有响应

Stream:

流模式:响应到达fiddler,有一个响应就返回给前端一个响应

缓冲模式:响应回到fiddler,等待有全部响应之后,再返回到前端

所以一般不使用流模式,只使用缓冲模式

decode:解码

有一些数据从服务器回来,会进行编码压缩,点击进行解码

Keep all sessions:

保存所有的会话,会话会占用内存

Any process:

点击之后,会变成十字,点击某个应用,就是抓包某个应用,例如:点击谷歌浏览器,上方就会变成chrome,后面跟当前进程号码。

[if !vml]

[endif]

选择监听的程序。

find:

crtl+F,可以查找请求、响应、url等

比如,可以帮助快速定位请求。搜索“该手机号没有被注册”,直接可以定位到哪些请求有这个响应。

save:

保存请求,可以把所有的会话保存一个saz文件,提交给开发。

截图

计时器

browse:

快捷打开一个浏览器

clearcache:

清除ie缓存

TextWizard:

文本的编码解码工具,聚集一些编码的编码解码

get请求url一般会做编码

MD5,密码进行加密

tearoff:拆开面板

online:显示本机的一些信息


4. Session List会话表

#:请求的id,带有一些小的图标,就代表这个请求是图片,js等等

result:相应结果,状态码

protocol:协议名称

host:主机名称

url:host+url就是一个完整的请求

body:发送的请求的内容有多少字节

caching:是否缓存

content-type:从服务器返回的请求是什么类型,js,json,png或者html

process:当前的请求来自于哪个进程

comments:添加评论

fiddler添加一列:

rules-customs rules(自定义的一个规则)-fiddler是c#编写的,百度fiddler-添加ip列


5. 状态栏与Exec

[if !vml]

[endif]

 黑色条:

QuickExec,快速执行命令

bpu设置断点,点击go,或者run to completion,或者再次输入bpu可以继续进行。如果包含副请求,那么所有副请求都会被断点。https://docs.telerik.com/fiddler/knowledgebase/quickexec

capturing:表示目前fiddler目前正在处于代理状态,单击就可以决定是否进行代理。


6. Statistics统计数据

Statistics:Http请求的性能和其他的数据分析。

DNS lookup:dns解析

TCPIP connect:建立TCPIP连接的时间消耗


7. Inspector检查器Autoresponder自动响应器

Autoresponder可以用于拦截某一请求,用于以下操作:

[if !supportLists]1.     [endif]重定向到本地的资源;

[if !supportLists]2.     [endif]使用fiddler的内置响应;

[if !supportLists]3.     [endif]自定义响应。

比如:

现在生产环境上出了问题,我们不能上生产环境上直接进行修改,否则会影响用户。

我们可以将请求拦截,重定向到本地资源,指定一个响应。

比如一个图片响应错误,我们可以将请求拦截,响应一张本地的图片。

1.复制图片地址url;2.在autoresponder中新增一条规则,rules,将url添加到规则编辑器中,指定一个响应,可以使用fiddler内部响应,也可以create a file使用本地其他响应。3.再比如,钓鱼网站,如果使用代理,就可以修改js,可以在网页上有弹窗(修改js:alert(1))。

如果没有开发好接口,如何模拟接口:

[if !supportLists]1.     [endif]拖动接口链接至autoresponder后,可以直接edit response,编辑响应

[if !supportLists]2.     [endif]


8.Composer

composer设计者,就是设计请求用的。设计请求报文,然后执行使用。简单的接口测试工具,发包工具。

比如,一个登录请求,在登录页面输入非法手机号码,和在composer中直接修改为非法手机号码,两者的响应不一样。在登录页面输入时,直接会报,该手机号非法,而在composer中修改手机号码,则会报该手机号未注册,这说明,后端的校验不合理,缺少对手机号码的校验,直接绕过了前端,绕过了逻辑,这样的程序健壮性不够,是有bug的。

重放请求:将所有请求拖动至composer-scratchpad中,三击某个需要重放的请求,直接execute就可以了。


9. Filter过滤器

filter,多维度过滤器,帮助我们来过滤请求

Host filter,主机的过滤intranet广域网

Client process filter,客端的进程的过滤 traffic流量

Request headers filter,请求头的过滤 set request header在所有请求中都加入一个请求头

Breakpoint filter,断点的过滤

Response status code filter,响应状态码的过滤

Response type and size filter,响应类型和大小的过滤


10.Breakpoint断点

Breakpoint断点

全局断点和局部断点

rules,automaticbreakpoints

[if !vml]

[endif]

Before requests:在fiddler请求到服务器前打断点

After responses:响应后断点

Disabled:不设置断点

这两者变换最底下图标会改变。

请求前断点:

可以在请求发出之前修改请求,例如更改登录手机号等,然后点击go,或者run

to completion,就可以完成请求。

响应后断点:

即响应之后,返回到客户端之前。

先点击断点,再抓请求,响应之后可以篡改响应。

应用场景:1.比如app中测试,某个接口的显示,我们可以通过修改响应中的东西,让展示出来的页面不一样,从而达到不修改数据库而展示页面,可以应用到一些极端测试情况中去。

         2.比如模拟网络中断,在响应之后设置断点,一直没有发送到客户端,超时之后,可以看下展示是否友好。如果只是断网或者打开飞行模式,是全局的断点,利用响应后断点可以做到某个响应断点。

局部断点:

bpu:请求前断点

例如,在最下面输入 bpu login,进行execute,执行之后,全部包含login的请求都会设置一个请求前断点,这就是局部断点。再次输入bpu,就取消了断点。

bpafter:响应后断点

再次输入bpafter,就取消了断点。


11. 弱网测试

模拟网络限速,模拟网络环境,速度非常缓慢。

[if !vml]

[endif]

点开之后,可以进行网络状况的编辑,crtl+F5进行搜索,搜索simulate,找到模拟弱网的代码,请求每kb减慢300ms,响应每kb减慢150ms。


12.Williow插件

Traffic differ:用来对比两个请求,一般用于web调试

PDF view:如果请求的资源是pdf,那么展示的时候就可以以pdf的形式展示出来

JavaScript Formatter:用于做js脚本格式化,当从服务器请求了一个js资源,如果比较大,一般情况下,我们会进行压缩,那么展示的时候就不会非常直观,该插件是让这些资源在展示的时候更加直观一些。

CetMaker for IOS and Android:制作证书使用,当我们fiddler版本比较低时,有可能抓不到https的请求,可以安装该插件,重新安装证书,抓包。

Williow插件:可以把它当作autoresponder+tools-hosts的加强版。比如,我们需要设置在test环境和dev环境响应规则不一样,

比如,我们将www.baidu.com在开发环境重定向,响应回一个本地的图片,那么我们按照下图重新设置一个host+一个rule。利用勾选来进行生效/失效。

[if !vml]

[endif][if !vml]

[endif][if !vml]

[endif][if !vml]

[endif]


13. 抓取HTTPS流量

在Web通信时,需要对HTTP数据包进行对称加密,浏览器和web服务器通过协商来确定使用哪种加密算法,并且通过加密和解密他们之间的消息进行通信。

HTTP协议是不安全的,浏览器发送给服务器的内容非常容易被中间人拦截。

HTTPS就是加密过的HTTP;HTTPS=HTTP+TLS或者SSL,采用HTTPS的网站需要去数字认证机构申请证书(certificate authority,CA)。通过这个证书,浏览器在请求数据前与web服务器有几次握手验证,以证明相互的身份,然后对HTTP请求和响应进行加密。

Fiddler获取HTTPS会话:启动Fiddler—tools—options—HTTPS,选中decrypt HTTPS traffic,在弹出的两个对话框中单击yes,同时选中ignore

server certificate errors。Fiddler弹出警告信息,单击yes,信任证书,系统弹出警告,单击yes,安装证书。(可以在浏览器中输入HTTPs://www.baidu.com检查是否捕捉到了HTTPs的百度请求)

添加例外绕过HTTPs证书错误:有时候安装好了Fiddler证书,使用Fiddler捕获HTTPs网站的时候,仍然会出现连接错误,此时单击“我以充分了解可能的风险—添加例外—确认安全例外”,可以绕过证书错误。

Firefox需要单独安装证书,具体步骤:点击actions下面的第二个选项“export

root certificate to desktop”把证书导出到桌面,证书文件名为“Fiddlerroot.cer”;然后打开Firefox,工具—选项—高级—证书—查看证书,打开证书管理器—选择证书机构—单击导入Fiddlerroot.cer,选择弹出对话框的3个选项,确定即可。

Fiddler可以捕获HTTPs的握手验证请求:Fiddler中抓到的“tunnel

to”的请求。HTTP tunnel又叫做HTTP隧道或者HTTP穿梭。

查看Windows本地安装的证书:Windows+r,在命令行窗口输入certmgr.msc;或者tools—HTTPs—actions—open

Windows certificate manager。

 

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 http协议和fiddler抓包 Fiddler抓包的原理:fiddler本质是一个代理服务器,默认的工作端口...
    persist阅读 958评论 0 3
  • 对于java中的思考的方向,1必须要看前端的页面,对于前端的页面基本的逻辑,如果能理解最好,不理解也要知道几点。 ...
    神尤鲁道夫阅读 842评论 0 0
  • 现在有些网络语句是这么说的,“要怪就怪自己,你有本事喜欢上别人,没本事让别人喜欢自己。”“自找的痛又何必喊疼。”“...
    逆袭吧Michael阅读 117评论 0 0
  • 喜欢他,他又不接受,只是我的蓝颜知己。
    忆汐阅读 167评论 0 0