优快云话题挑战赛第2期
参赛话题:学习笔记
目录
今天我们再来介绍Fiddler。话不多说,开始整干货,老规矩,首先全图镇楼。
什么是代理
Fiddler是一个抓包工具。其实抓包工具在chrome浏览器也有,通常按F12 之后,然后有一个 Network的功能选项,下面就是抓包的面板,这个面板有两个部分,左边就是一条一条的 URL ,右边就是点击每个 URL 之后显示的详细信息。
但是浏览器它是毕竟是用来浏览网页的,抓包工具有是有,就是功能不是太强大,也不是一个专门的工具。所以Fiddler是一个专门的一个抓包工具。
Fiddler到底是什么?我们先看看一个例子,比如你访问一个网页,就会有请求发出,然后服务器返回数据,这是一次比较典型的客户端服务器模式,但是当你使用Fiddler之后,它会在中间给你加一层代理。你作为一个客户端,你发送的 URL 不再是直接发给服务器了,而是先发给这个Fiddler,Fiddler拿到你的请求之后,然后可能做处理,也可能不做处理,然后再把请求转发给服务器。同样服务器处理完请求,返回结果的时候,不再直接返回到你这里,而是先发给Fiddler,Fiddler拿到你的响应结果之后,然后可能做处理,也可能不做处理,最后再返回给你。
这就像有人要买房,有人要卖房的,他们之间没有那么好的运气能够碰面,中间要有房产经纪人才能凑成这单生意。房产经纪人就是这种代理。说白了代理就是在中间截取流量,它可能对这个流量做手脚也可能不做手脚,然后再转发出去,所以它的作用还是蛮大的。
Fiddler的左侧面板
以下是Fiddler的界面,它有两个部分,就像 Chrome 浏览器一样,按F12,在Network面板里也同样有两个部分,他们基本上长得都差不多。左边是一条条的URL,右边是点击某个URL的详细信息。
我们先看看左侧,左侧看似内容比较多,其实最主要的内容就是一条条的URL,然而它也不是单纯的URL,而是通过表格的方式,对每个URL进行更细粒度的划分,首先看一看表头:
1:#(抓取HTTP Request的顺序,从1开始,以此递增)
2:Result(HTTP状态码)
3:Protocol(请求:使用的协议,如HTTP/HTTPS/FTP等)
4:Host(请求地址的主机名)
5:URL(请求资源的位置)
6:Body(该请求的大小)
7:Caching(请求的缓存过期时间或者缓存控制值)
8:Content-Type(请求响应的类型)
9:Process(发送此请求的进程:进程ID)
10:Comments(允许用户为此回话添加备注)
11:Custom( 允许用户设置自定义值)
第一列的#号它是表示顺序,从上往下递增。
其次是状态码,这里只要关注状态码为200的URL,其余状态码都是异常状态。
接下来的协议有HTTP和HTTPS,当前主流的网站都使用HTTPS的协议,因为HTTPS是HTTP的升级,HTTPS后面的S是指SSL,是一种安全协议,也就是HTTP+SSL=HTTPS。URL才有HTTPS协议,通常在安全性上更有保证,相比HTTP裸奔的方式要好很多。
Host是主机的域名,和后面的URL似乎很相似,其实这里的URL就是主机域名加资源路径的组成,主机域名可以理解为服务器的ip地址,我们大老远的访问服务器,总得先确定到底是访问的那个服务器吧,我们沿着主机域名绑定的IP来到了服务器,接下来需要做什么?
显然就是寻找服务了,这里的资源路径就派上用场了,这里的资源路径有点像文件系统里的文件路径,就好像直接访问文件路径下文件就直接返回结果了,其实这样说是不准确的,服务器的作用就是运行应用,这个资源路径其实就是访问应用的路径,其实就是访问应用的接口,说是接口,最终还是调用应用里的方法,其实有的应用框架在提供对外接口的时候确实是按方法名命名的,但是这样只图一时爽的方式还是有很多的弊病,首先就是它所能表达的信息比较有限,所有的信息都写在方法名上,一个名字太长也容易让人困惑,然而以资源路径的方式作为接口就有了更多的表达含义,比如以版本,模块,功能为路径划分接口,就有了灵活又丰富的表达内容。
剩下的Body,Caching,Content-Type,Process等就是将消息头的内容提前展示出来,为快速批量的查看URL提供了便利,这是Chrome自带的抓包工具所不能比的。
在查看左侧面板的一条条的URL的时候,还有一个比较重要的内容就第一列递增数字旁边的小图标,这个小图标表明了当前URL返回的数据时什么样的类型,或者表示当前请求所处的状态,内容比较丰富,直接上表格:
Fiddler的右侧面板
(1) Statistics
Statistics 请求的性能数据分析,关于发送时间和响应时间的统计,发送了多少字节的数据,接收了多少字节的数据,以及消息头的大小。
(2) Inspectors
Inspectors 查看数据内容,Inspectors是最主要使用的功能,所谓的抓包,抓到的包就是这里的内容,它包括请求的内容和响应的内容,
在上面的请求内容里不仅有请求的URL和请求方式,还有请求头信息
在下面的响应内容里不仅有响应的内容和响应状态,还有响应的头信息
(3) AutoResponder
AutoResponder 允许拦截指定规则的请求,AutoResponder功能可以拦截请求,只要请求的URL中含有AutoResponder配置的字符串则会被拦下这个请求。
1. Add Rule 添加一个拦截规则
2. 编辑拦截规则,需要拦截的字符串,这里是baidu,也可以使用正则表达式进行匹配
3. 当URL触发拦截的时候,响应给请求方的内容,这里是一个图片,注意这个图片需要放在Fiddler2\Captures\Responses下
4. 保存拦截规则
5. Enable Rules 使拦截规则生效
6. Unmatched requests passthrough 放行不匹配的的请求,这里不打钩,则所有的请求都被拦住
(4) Filters
Filters 请求过滤规则,在使用Fiddler的时候,作为一个自动开启的代理软件,自然就把网络流量给接管过来,这样哗啦啦的一大堆请求,并不是我们都需要的,弱水三千只取一瓢饮,在实际使用的时候,我们只关注几个URL即可,这时就可以使用Filters功能,设置需要关注的URL,面板中无关人员就退场了,只留下几个需要关注的URL。
1. 默认选项,无须设置
2. 只显示互联网域名
3. 设置互联网域名,这里是只关注www.baidu.com的流量
4. 点击生效
(5)Composer
Composer自定义请求发送服务器
1. 请求的URL:http://autodev.openspeech.cn/csp/api/v2.1/weather?openId=aiuicus&clientType=android&sign=android&city=南京
2. 请求头信息
3. 请求成功