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。