某某茶叶有限公司欢迎您!
金沙棋牌在线 > Web前端 > HTTP抓包工具Charles分析

HTTP抓包工具Charles分析

时间:2019-12-29 06:38

一分钟预览 HTTP2 特性和抓包分析

2016/09/26 · JavaScript · HTTP/2

原文出处: 段隆贤   

Charles是一款抓包神器,它是Java开发的跨平台的软件,不仅可以在Mac上使用,Linux以及Window下都是可以使用的,当然需要安装JDK,才能运行,他是收费的,需要进行破解.

***wireshark用户手册***

背景

近年来,http网络请求量日益添加,以下是httparchive统计,从2012-11-01到2016-09-01的请求数量和传输大小的趋势图:

图片 1

 

当前大部份客户端&服务端架构的应用程序,都是用http/1.1连接的,现代浏览器与单个域最大连接数,都在4-6个左右,由上图Total Requests数据,如果不用CDN分流,平均有20个左右的串行请求。
HTTP2 是1999年发布http1.1后的一次重大的改进,在协议层面改善了以上问题,减少资源占用,来,直接感受一下差异:

HTTP/2 is the future of the Web, and it is here!
这是 Akamai 公司建立的一个官方的演示,用以说明 HTTP/2 相比于之前的 HTTP/1.1 在性能上的大幅度提升。 同时请求 379 张图片,从Load time 的对比可以看出 HTTP/2 在速度上的优势。

图片 2

 

本文所有源码和抓包文件在github

破解操作:将下载的文件里的Charles.jar 替换掉包内容里的Charles.jar即可

http://man.lupaworld.com/content/network/wireshark/index.html

HTTP/2 源自 SPDY/2

SPDY 系列协议由谷歌开发,于 2009 年公开。它的设计目标是降低 50% 的页面加载时间。当下很多著名的互联网公司都在自己的网站或 APP 中采用了 SPDY 系列协议(当前最新版本是 SPDY/3.1),因为它对性能的提升是显而易见的。主流的浏览器(谷歌、火狐、Opera)也都早已经支持 SPDY,它已经成为了工业标准,HTTP Working-Group 最终决定以 SPDY/2 为基础,开发 HTTP/2。HTTP/2标准于2015年5月以RFC 7540正式发表。

但是,HTTP/2 跟 SPDY 仍有不同的地方,主要是以下两点:

HTTP/2 支持明文 HTTP 传输,而 SPDY 强制使用 HTTPS
HTTP/2 消息头的压缩算法采用 HPACK ,而非 SPDY 采用的 DEFLATE(感谢网友 逸风之狐指正)

协议文档请见:rfc7540:HTTP2

HTTP抓包

http抓包比较简单,基本上只要打开了charles,然后随便一个网络请求,就可以在charles中看到抓取的信息了,如下:

图片 3

根据抓包可以看出该请求的请求方式、请求地址及cookie信息等,也可以查看接口请求结果返回,如下:

图片 4

 

能够分析出http的tcp数据,很强大。

HTTP2特性概览

charles 客户端抓包

 1. 获取charles所有pc的IP地址,可以通过cmd,输入ipconfig进行查看

 2. 设置手机代理,设置wifi-选择【显示高级选项】-【代理】选择为手动,【服务器主机名】为charles所在pc的IP,【服务器端口】为charles默认端口8888

 3. 也可以修改端口,找到charles的Proxy-Proxy Settings,可以看到HTTP Proxy的端口默认为:8888

 4. 代理设置成功后,charles页面弹出提示,是否允许charles作为手机的网络请求代理,如下:

图片 5

 5. iOS/Android设备打开你要抓包的app进行网络操作

图片 6

Charles 主要提供两种查看封包的视图,分别名为 “Structure” 和 “Sequence”。

  1. Structure 视图将网络请求按访问的域名分类。

  2. Sequence 视图将网络请求按访问的时间排序

1. 二进制协议

HTTP/2 采用二进制格式传输数据,而非 HTTP/1.x 的文本格式

图片 7

 

由上图可以看到HTTP2在原来的应用层和HTTP层添加了一层二进制传输。

二进制协议的一个好处是,可以定义额外的帧。

HTTP/2 定义了近十种帧(详情可分析抓包文件),为将来的高级应用打好了基础。如果使用文本实现这种功能,解析数据将会变得非常麻烦,二进制解析则方便得多。
RFC7540:Frame Definitions

图片 8

协议中定义的帧

过滤网络请求

 通常情况下,我们需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。对于这种需求,以下几种办法:

方法一:在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:http://wwww.besttest.cn , 那么只需要在 Filter 栏中填入 besttest即可

图片 9

方法二:在想过滤的网络请求上右击,选择 “Focus”,之后在 Filter 一栏勾选上 Focussed 一项,如下图所示:

图片 10

这种方式可以临时性的,快速地过滤出一些没有通过关键字的一类网络请求。