购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.5 HTTP协议

在1.4节中了解的网页其实是前端静态网页,并没有与后端服务器进行交互。如果想了解网页前后端交互,就必须先掌握HTTP协议。

HTTP(Hyper Text Transfer Protocol)是超文本传输协议,是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个协议。设计HTTP最初的目的是提供一种发布和接收HTML页面的方法。

HTTP协议工作于客户端/服务器端架构之上。浏览器作为HTTP客户端通过URL向HTTP服务器端即Web服务器发送所有请求。Web服务器根据接收到的请求,向客户端发送响应信息。

下面详细了解一下HTTP请求、HTTP响应和抓包工具的使用。

1.5.1 HTTP请求

客户端发送一个HTTP请求到服务器的请求消息包括以下格式。

(1)请求行。

(2)请求头部。

(3)空行。

(4)请求数据。

【范例1.5-1】HTTP请求(源码路径:ch01/1.5/1.5-1.html)

范例文件1.5-1.html的具体实现代码如下。

【范例分析】

(1)第一部分:请求行,第1行,指明了是post请求,以及HTTP1.1版本。

(2)第二部分:请求头部,第2~7行,包括5个键值对。

(3)第三部分:空行,第8行的空行。

(4)第四部分:请求数据,第9行。

1.5.2 HTTP响应

通常情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。

HTTP响应也由四部分组成,具体如下。

(1)状态行。

(2)消息报头。

(3)空行。

(4)响应正文。

【范例1.5-2】HTTP响应(源码路径:ch01/1.5/1.5-2.html)

范例文件1.5-2.html的具体实现代码如下。

【范例分析】

(1)第一部分:状态行,由HTTP协议版本号、状态码和状态消息三部分组成。

(2)第二部分:消息报头,用来说明客户端要使用的一些附加信息。第二行和第三行为消息报头,包括两个键值对。

(3)第三部分:空行,消息报头后面的空行是必需的。

(4)第四部分:响应正文,服务器返回给客户端的文本信息。空行后面的html部分为响应正文。

1.5.3 常见的请求头

请求头都是一些键值对,表示不同的含义。常见的请求头信息如表1-11所示。

表1-11 常见的请求头信息

续表

续表

1.5.4 常见的响应头

与请求头类似,响应头也都是一些键值对,表示不同的含义。常见的响应头信息如表1-12所示。

表1-12 常见的响应头信息

续表

续表

续表

提示

响应状态代码由3位数字组成,第一个数字定义了响应的类别,且有以下5种可能取值。

(1)1xx:指示信息——表示请求已接收,继续处理。

(2)2xx:成功——表示请求已被成功接收、理解、接受。

(3)3xx:重定向——要完成请求必须进行更进一步的操作。

(4)4xx:客户端错误——请求有语法错误或请求无法实现。

(5)5xx:服务器端错误——服务器未能实现合法的请求。

1.5.5 HTTP和HTTPS

HTTP是互联网上应用最为广泛的一种网络协议,是一个客户端与服务器端请求和应答的标准(TCP),是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。

HTTPS是以安全为目标的HTTP通道,简单来说,HTTPS是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议,用于对HTTP协议传输的数据进行加密,从而诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全。

HTTPS和HTTP的区别主要如下。

(1)HTTPS协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。

(2)HTTP是超文本传输协议,信息是明文传输;HTTPS是具有安全性的SSL加密传输协议。

(3)HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

(4)HTTP的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。

1.5.6 抓包工具Fiddler

如果想更好地了解请求和响应的数据,那么就需要借助抓包工具了。而Fiddler就是比较常用的一种抓包工具。

Fiddler可以将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也可以用来检测网络安全。

1.下载安装

Fiddler默认仅支持Windows平台。Windows 8之后用Fiddler for.NET4,而Windows 8之前用Fiddler for.NET2比较好。

访问Fiddler官方网址,如图1-33所示。

图1-33 下载Fiddler

输入并选择相应信息后,单击【Download for Windows】按钮,下载软件安装即可。

提示

如果要在Linux平台上使用,则需要Mono框架的支持。

2.工作原理

当浏览器访问服务器时,会形成一个请求,此时,Fiddler就处于请求之间;当浏览器发送请求时,会先经过Fiddler,然后再到服务器。当服务器有返回数据给浏览器显示时,也会先经过Fiddler,然后数据才到浏览器中显示,这样一个过程,Fiddler就爬取到了请求和响应的整个过程。

3.抓包简介

Fiddler是通过改写HTTP代理,让数据从它那通过,来监控并截取数据。当然,Fiddler很强大,在打开它的一瞬间,它就已经设置好了浏览器的代理了。当关闭时,它又把代理还原了。

Fiddler开始工作了,抓到的数据包就会显示在列表中,如图1-34所示。

图1-34 抓到的数据包信息

(1)说明。

列表页面字段选项的含义如表1-13所示。

表1-13 列表页面字段选项的含义

列表页面图标的含义如表1-14所示。

资源下载码:93351

表1-14 列表页面图标的含义

续表

(2)Statistics请求的性能数据分析。

任意选择一个请求选项,就可以看到Statistics关于HTTP请求的性能及数据分析,如图1-35所示。

图1-35 HTTP请求的性能及数据分析

(3)Inspectors查看数据内容。

Inspectors用于查看会话的内容,上半部分是请求的内容,下半部分是响应的内容,如图1-36所示。

图1-36 Inspectors查看数据内容

(4)Composer自定义请求发送服务器。

Composer允许自定义请求发送到服务器,可以手动创建一个新的请求,也可以在会话表中拖曳一个现有的请求。

Parsed模式下只需要提供简单的URLS地址即可,也可以在RequestBody中定制一些属性,如模拟浏览器User-Agent,如图1-37所示。

图1-37 Composer自定义请求发送服务器

(5)Filters请求过滤规则。

Filters是过滤请求用的,左侧的窗口不断地更新,当想看系统的请求时,刷新一下浏览器,出现一大片不知道从哪来的请求,它还一直刷新屏幕。这时就可以通过过滤规则来过滤掉那些不想看到的请求。

选中【Use Filters】复选框开启过滤器,这里有两个最常用的过滤条件:Zone和Host。Zone指定只显示内网或互联网的内容;Host指定显示某个域名下的会话。如图1-38所示。

图1-38 Filters请求过滤规则

4.Fiddler设置解密HTTPS的网络数据

Fiddler可以通过伪造CA证书来欺骗浏览器和服务器。Fiddler的大概原理就是在浏览器面前Fiddler伪装成一个HTTPS服务器,而在真正的HTTPS服务器面前Fiddler又伪装成浏览器,从而实现解密HTTPS数据包的目的。

解密HTTPS需要手动开启,步骤如下。

01执行菜单栏中的【Tools】→【Telerik Fiddler Options】→【HTTPS】命令。

02选中【Decrypt HTTPS Traffic】复选框。

03如果要爬取所有请求,则选中【from all processes】单选按钮。如果只爬取Web请求,则选中【from browsers only】单选按钮。

04单击【Actions】按钮,出现警告框,单击【Yes/是】按钮。

05最后单击【OK】按钮,设置完毕。

5.Fiddler爬取iPhone/Android数据包

想要Fiddler爬取移动端设备的数据包,其实很简单,先来说说移动设备怎么去访问网络,如图1-39所示。

图1-39 移动设备访问网络的流程

从图1-39中可以看出,移动端的数据包都是通过Wi-Fi传出去的,所以我们可以把自己的计算机开启热点,将手机连上计算机,Fiddler开启代理后,让这些数据通过Fiddler, Fiddler就可以抓到这些包,然后发给路由器,如图1-40所示。

图1-40 抓取移动设备网络的流程

步骤如下。

01打开Wi-Fi热点,让手机连上。

02打开Fiddler,执行菜单栏中的【Tools】→【Telerik Fiddler Options】命令。

03单击【Connections】标签,设置代理端口为【8888】,选中【Allow remote computers to connect】复选框,单击【OK】按钮,如图1-41所示。

图1-41 设置代理端口

04这时在Fiddler中单击右上角的【Online】按钮,就可以看到本机无线网卡的IP了(如果没有,则重启Fiddler,或者可以在CMD窗口中使用“ipconfig”命令找到自己的网卡IP),例如,这里的IP是“192.168.137.1”。

05在手机端连接PC的Wi-Fi,连接成功后,设置代理IP与端口(代理IP就是192.168.137.1,端口是Fiddler的代理端口8888),如笔者的手机,设置如图1-42所示,点击保存。

图1-42 设置代理IP

06访问网页输入代理IP和端口,下载Fiddler的证书,点击如图1-43所示的【FiddlerRoot certificate】超链接进行下载。

图1-43 下载Fiddler证书

07点击如图1-44所示的【安装】,安装下载的证书。

图1-44 安装Fiddler证书

08安装完证书,可以用手机访问应用,就可以看到抓取到的数据包了。如图1-45所示选中的数据包是通过UC浏览器访问的。

图1-45 查看数据包 5S9s/0pjlxa6tHfdWBy+G03HlrpUoMQ+XtJXmpx+Z6r4SSp9agaLNw2/cfMEuvcM

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开