一、Fiddler抓包与HTTP协议(包含Fiddler工具介绍、Web代理、HTTP数据包结构分析以及抓不到包的情况等)
这次笔记分四个部分介绍,主要是:Fiddler工具的简介、HTTP协议的介绍及工作原理、Fiddler抓包以及抓包小提示。下面就分别进行介绍。
一、Fiddler工具的简介
Fiddler能够记录所有客户端和服务器的HTTP或者HTTPS请求,还可以设置断点、甚者修改请求的输入输出数据。另外,Fiddler包含了非常强大的基于事件的子系统,并且能够使用.NET语言进行拓展。
Fiddler的基本界面包括下面的区域:
接下来,分别对其进行简单的说明:
1.主菜单栏:囊括几乎Fiddler所有的功能;
2.工具栏:提供了很多常见的命令
3.Web Sessions列表:显示捕捉的每一个Session的简短信息。
4.功能面板:这里有很多功能,常用的是Inspectors选项卡。
5.命令行工具:用于输入简单的命令,如:cls可以清空Web Sessions。
6.状态栏:显示Fiddler的一些配置信息。
Inspectors选项卡:
Inspectors选项卡可以查看HTTP请求、响应的报文结构。Raw选项可以查看完整的消息,Headers选项只可以看到消息中的Header部分。
Web Sessions列表中的基本显示项的意义:
protocal:使用的协议HTTP或者HTTPS
Host:服务器的主机名、端口号
URL:url路径
Body:HTTP响应中包含的字节数
Caching:跟缓存相关的字段的值
Content-Type:响应中Content-Type的值
Process:对应本地Windows的进程
设置开始抓包、停止抓包:
方式1:File--->Capture Traffic
方式2:基本页面左下角(状态栏左边)--》单击 控制开始抓包与停止抓包
下面简单举一个抓包的实例:
找到你要抓包的请求,在Inspectors选项卡中的raw项中,看请求报文;下面看响应报文。
二、HTTP协议工作原理、HTTP请求报文结构
1.什么是HTTP协议?
协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或者规则。
超文本传输协议(HyperText Transfer Protocol,HTTP)是互联网上应用最广泛的一种网络协议,它允许将超文本标记语言(HTML)文档从Web服务器传输到客户端的浏览器。
2.HTTP协议的工作原理
一次HTTP操作称之为一个事务,简单的描述其过程:
1.地址解析(从一个目标URL中,解析出:协议名、主机名、端口、对象路径(url接口路径))
2.封装HTTP请求数据包(将第1步解析的数据与本机自己的信息一起封装成一个HTTP请求数据包)
3.封装成TCP包、建立TCP连接(TCP三次握手)
4.建立连接后,客户机发送请求命令
5.服务器响应(响应报文可以通过抓包看到)
6.服务器关闭TCP连接(一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了代码: Connection:keep-alive;那么,TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。)
3.HTTP请求报文的结构
特别注意:Header首部与Body主体之间有一个空行
4.HTTP响应报文的结构
特别注意:Header首部与Body主体之间有一个空行
三、Fiddler的抓包原理
1.Fiddler本质上是一个Web代理服务器,其默认端口为:8888;
2.什么是代理服务器?
Web代理(Proxy Server)服务器是网络的中间实体。HTTP的代理服务器既是Web服务器也是Web客户端。如图:
代理服务器是网络信息的中转站;Fiddler是以Web代理服务器的形式工作的,其使用代理地址:127.0.0.1,端口:8888;
当Fiddler启动时,会自动把Internet选项中的代理修改为127.0.0.1,端口:8888;当其关闭的时候,会自动在Internet选项中取消代理,这样就不会影响别的程序。若Fiddler非正常退出,会造成网页无法访问,解决方式是重新启动Fiddler或者手动关闭代理。
查看Internet选项代理设置:
启动Fiddler--->(不只是打开该应用,还要保证Capturing开启,即:抓包开关是处于开启状态)
--->进入控制面板--->找到Internet--->高级,局域网设置,可以看到下图,关闭Capturing或者直接关闭Fiddler应用,再次看代理服务器地址已经取消了。
四、Fiddler抓包小知识
1.Fiddler抓不到Firefox浏览器的解决方式?
Fiddler有时候不能抓取到Firefox的请求,那是因为Firefox的代理服务器没有设置成Fiddler.此时,你需要在浏览器的网络设置中,选择使用系统代理或者手动代理,指向Fiddler.
或者:
2.解压HTTP响应,有时候在Fiddler上经常看到HTTP响应是乱码,此时:点击【Response body encoded.Click to decode.】后,可以解压HTTP响应。看到正常的HTTP响应。
点击之后:
推荐:关于Web端的HTTPS抓包:https://blog.****.net/ak739105231/article/details/102570747