Charles抓包工具简介

2019-03-07  本文已影响0人  栗子_2019

1、工具介绍

Charles是一款在Mac下常用的数据包截取工具,在做移动开发时,为了调试移动端与服务端的网络通讯协议,常常需要截取网络数据包来进行分析。

Charles主要功能包括:

截取Http和HTTPS网络封包;

支持重发网络请求,方便后端调试;

支持修改网络请求参数;

支持网络请求的捕获并动态修改;

支持模拟慢速网络。

Chrome 和 Firefox 浏览器默认并不使用系统的代理服务器设置,而 Charles 是通过将自己设置成代理服务器来完成封包截取的,所以在默认情况下无法截取 Chrome 和 Firefox 浏览器的网络通讯内容。如果你需要截取的话,在 Chrome 中设置成使用系统的代理服务器设置即可,或者直接将代理服务器设置成 127.0.0.1:8888 也可达到相同效果。

Fiddler的功能非常多,在实际使用过程中,经常用到的功能其实就那么几项,所有说fiddler有点大材小用,相反Charles界面简洁,这也是我一接触就抛弃fiddler的原因。

2、菜单功能介绍

首先来看下界面,包括两种视图模式(Structure + Sequence),如下图:

Structure模式

Sequence模式

包括6个主菜单,分别为:File、Edit、View、Proxy、Tools、Window。

2.1、File菜单介绍

该菜单下包括如下功能:

New Session:开启一个新会话,可以新建一个会话页面,这样就能在不同的会话页面抓取不同页面的数据包了。

Open Session:打开保存的会话文件

Clear Session:清除会话内容,会清空已经抓取到的数据包

CloseSession:关闭会话

Save Session:保存会话

Save Session As:会话另存

Import:导入会话信息

Export Session:导出会话信息

与Fiddler对比:在fiddler中新建会话会再启动一个客户端,Charles则相对来说更加方便。

2.2、Edit菜单介绍

该菜单下包括如下功能:

Cut:剪切-对选中的请求执行剪切操作

Copy:复制-对选中的请求执行复制操作

Paste:粘贴-对剪切的请求执行粘贴操作

Select All:选中当前会话页面的所有请求

Find:可以在制定的范围内查找关键字内容

Preferences:界面样式及字体等设置

2.3、View菜单介绍

该菜单下包括如下功能:

Structure:工具介绍一章中介绍的两种视图模式,按访问的域名分类

Sequence:工具介绍一章中介绍的两种视图模式,按访问的时间排序

Overview:HTTP/HTTPS请求的概要信息

Request:请求的详细内容

Response:服务端根据请求返回的数据内容

Summary:汇总请求包括哪些资源,耗时及数据包大小信息

chart:请求包括的资源耗时分析

Notes:日志信息

View Request As:以怎样的方式查看请求

View Response As:以怎样的方式查看服务端返回的内容

后续的菜单一般很少用到,这里不再列举

2.4、Proxy菜单介绍

Start Recording:结合Recording Settings使用,捕获的开关;

Start Throttling:结合Throttling Settings使用,模拟各种网络环境;

Enable Breakpoints:结合Breakpoint Settings使用,启用断点;

Recording Settings:监听设置,可以设置监控的目标主机名、协议、端口和关键字等信息;

Throttling Settings:模拟各种网络环境,包括:3G、4G等场景;

Breakpoint Settings:断点设置,有时候对于一些特殊请求在发往服务器之前想要修改一些参数,或者在服务器响应完成之后修改响应信息,此时可以使用Charles的断点功能;

Reverse Proxies:反向代理功能,将发往目标端口的数据,发送到本地

Port Forwarding:重定向功能,将发往本地端口到的数据,发到其他环境中

Windows Proxy/Mozilla Firefox Proxy:设置为系统代理/设置为火狐浏览器代理

Proxy Settings:代理的设置选项

SSL Proxying Settings:抓取https数据包的设置

Access Control Settings:设置抓取的目标IP的

External Proxy Settings:把经过Charles的请求转到其他代理服务器(如fiddler),适用于特殊情况下需要用到两个软件的特点进行开发的时候;

Web Interface Setting:在web页面访问Charles,用处不大

2.5、Tools菜单介绍

该菜单下包括如下功能:

No Caching:无缓存访问请求,接来下的都不再从缓存中读取

Block Cookies:阻止发送和接收cookie,默认针对所有请求,也可以针对指定请求

Map Remote:将指定的网络请求重定向到另外一个地址

Map Local:将指定的网络请求重定向到本地的地址,将网络请求通过 Map Local 映射到了本地的一个经过修改的文件中;

Rewrite:对某一类的网络请求进行一些正则替换,以达到修改结果的目的;

Black List:黑名单列表,输入不想访问的地址等,

White List:白名单列表,输入允许访问的地址等信息

DNS Spoonfing:DNS 欺骗设置

Compose/Compose New:手动构造请求

Advanced Repeat:请求迭代次数的设置

后面几项基本不用,不在列举

2.6、Window菜单介绍

该菜单下包括如下功能:

Session*:切换会话窗口,如果有多个会话的话,这里就会显示多个会话列表

Error Log:显示程序的错误日志

Active Connections:显示处于未关闭状态的连接请求

3、操作介绍

3.1、过滤网络请求

在抓包的时,通常会抓到大批量的数据包,后期不方便查看,这时候我们需要对网络请求进行过滤,有3种方法:

在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。例如要查看”www.baidu.com”的数据包

选择Proxy下的Recording Settings,填写要过滤的信息,如下图

确定后,再访问页面时,”www.baidu.com”之外的数据包不会被抓取到。

③选中要过滤的某类请求,右键选中”Focus”,再在主界面上勾选”Focused”。

3.2、抓取http的数据包

选择“Proxy”下的“Proxy Settings”,在“Proxies”页面填写监听的端口号,勾选“Enable transparent HTTP proxying”,如下图:

在手机网络设置里面填写代理服务地址信息

确保手机和电脑在一个网段(连接同一个路由器),服务器中填写电脑的IP,端口就填写刚才页面的Port端口号,返回wifi列表页。

设置好之后,我们打开手机上的任意需要网络通讯的程序,就可以看到 Charles 弹出请求连接的确认菜单(如下图所示),点击“Allow”即可完成设置。

确定后就可以抓到手机app发给后台的数据包了。

3.3、抓https的数据包

如果需要截取分析Https协议相关的内容。那么需要安装Charles的CA证书。

首先需要在电脑上安装根证书。选择”Help”>>”SSL Proxying”>>”Install Charles Root Certificate”,弹出证书的安装页面,如下图:

点击“安装证书”,直接全选择“下一步”,可以看到提示“导入成功”,最后点确定关闭页面。

接下来在手机上安装证书,点选择“Help”>>“SSL Proxying”>>“Install Charles Root Certificate on a Mobile Phone or Remote Browser”,按照弹出菜单将手机的代理设置为。

提示中的IP地址和端口号,设置完成后用手机浏览器访问“http://chls.pro/ssl”即可打开证书安装的界面,安装完证书后,就可以截取手机上的 Https 通讯内容了。

手机设置代理IP时,系统有可能出现如下提示信息:

这里选择“Allow”,否则就无法抓取到数据包了。

需要注意的是,即使是安装完证书之后,Charles 默认也并不截取 Https 网络通讯的信息,试着抓包后发现还是加密的内容,选择“Proxy”>>“SSL Proxying Settings”>>“Add”,填写服务端地址和端口(443),确定后就可以抓取https数据包了。

注意:

    通过工具可以抓包,是不是说https就是不安全的了呢,毕竟所有的请求对我们来说都是透明的呢。其实刚才的过程很重要的一点就是我们下载并且安装了Charles的根证书。而对https的安全来说,https安全的前提就是可信的根证书!!!!而之前的操作无疑是在我们系统里面安装了不可信的根证书。使得Charles对我们的通信造成了中间人攻击!。简单的说就是我们与服务器进行通信,会先获取服务器的证书,进行校验校验过程是用本地的可信根证书进行校验,而装入Charles的根证书后,Charles可以伪造证书,获取我们与服务器通信的秘钥,进行破解我们的通信。所以对我们我们系统来说安装证书是一个多么危险的操作!

哐哐哐!!查水表!!!

3.4、模拟慢速网络

在调试代码的过程中,有时候要模拟各种各样的网络场景,目的是验证服务端能否正确的处理请求,应用的表现是否正常。而Charles对此需求做了很好的支持。选择“Proxy”>>“Throttle Setting”,弹出菜单中选择“Enable Throttling”同时可以指定主机的请求模拟慢速网络。

支持的网络场景包括ADSL、3G、4G等。设置完毕后选择“Proxy”>>“Start Throttling”开始模拟场景。

3.5、修改网络请求

切换到Sequence模式,在需要修改的请求上右键,选择“Compose”后在下方就会新建一个请求,接着就可以修改请求的参数值了。

3.6、简单压测操作

在要选择的请求上右键,选择“Repeat Advanced”填写要重复执行的次数后,点击ok之后就会按照设置的次数进行重复访问了。

3.7、Map重定向功能

重定向功能包括Map Remote 和 Map Local两种。顾名思义,Map Remote 是将指定的网络请求重定向到另一个网址请求地址,Map Local 是将指定的网络请求重定向到本地文件。

在 Charles 的菜单中,选择“Tools”->”Map Remote”或“Map Local” 即可进入到相应功能的设置页面。

如下就是实现将测试环境的请求重定向到线上环境

3.8、Breakpoints功能

待续

3.9、反向代理功能

Charles 的反向代理功能允许我们将本地的端口映射到远程的另一个端口上。例如,在下图中,我将本机的 61234 端口映射到了远程(test.deji.com)的8080端口上了。这样当我访问本地的 61234 端口时,实际返回的内容会由 test.deji.com 的 8080 端口提供。

选择“Proxy”>>“Reverse Proxies”,弹出如下图:

填写端口号和服务端的IP即可。

上一篇下一篇

猜你喜欢

热点阅读