抓包工具-charles
一、简介
Charles是在Mac下常用的截取网络封包的工具,在测试服务器端的网络通讯,往往用它来截取网络封包来分析。Charles通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取与分析。
除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 Https 协议。
Charles主要功能有:
1、截取 Http 和 Https 网络封包。
2、支持重发网络请求,方便后端调试。
3、支持修改网络请求参数。
4、支持网络请求的截获并动态修改。
5、支持模拟慢速网络。
二、安装
1、安装
Charles 的官方网站 https://www.charlesproxy.com/ 下载最新版的 Charles安装包,是一个dmg后缀的文件。打开后将Charles拖到Application 目录下即完成安装。
3、安装使用过程中遇到的问题
1)问题:安装完charles后,打开使用开始抓包,发现一使用charles抓包,浏览器就不能正常连接,显示【不是私密连接】。
2)解决方案:安装好charles后,要在mac上安装证书,并且在钥匙串中将证书改为【信任】:
三、基本配置
1、将 Charles 设置成系统代理
Charles是通过将自己设置成代理服务器来完成封包截取的,所以使用Charles第一步就是将其设置成系统的代理服务器。选择菜单中的 “Proxy” –> “Mac OS X Proxy” 来将 Charles 设置成系统代理。
【note】Chrome 和 Firefox 浏览器默认并不使用系统的代理服务器设置,而 Charles 是通过将自己设置成代理服务器来完成封包截取的,所以在默认情况下无法截取 Chrome 和 Firefox 浏览器的网络通讯内容。如果需要截取的话,在 Chrome 中设置成使用系统的代理服务器设置即可,或者直接将代理服务器设置成 127.0.0.1:8888 也可达到相同效果
2、Charles抓包配置
Charles 通常用来截取本地上的网络封包,但是当我们需要时,我们也可以用来截取其它设备上的网络请求。
【前提】手机 和 Mac 是在同一个网段下
<1>打开Charles 的代理功能:菜单栏上选择 “Proxy”–>“Proxy Settings”,填入代理端口 8888(也可以自定义),并且勾上 “Enable transparent HTTP proxying”。
<2>获取mac的Ip地址。Charles 的顶部菜单的 “Help”->”Local IP Address”,即可在弹出的对话框中看到 IP 地址。
<3>手机wifi设置代理,「HTTP 代理」一项,我们将其切换成手动,然后填上 Charles 运行所在的电脑的 IP,以及端口号 8888,【即:IP为第二步的IP,Port为第一步中设置的Port】
<4>设置好之后,我们打开 手机上的任意需要网络通讯的程序,就可以看到 Charles 弹出 手机 请求连接的确认菜单,点击 “Allow” 即可完成设置。
5、https抓包
如果需要截取分析 Https 协议相关的内容。则需要安装 Charles 的 CA 证书。
【安装证书】具体步骤如下:
<1>电脑上安装SSL证书
charles - help - SSL Proxying,点击Install Charles Root Certificate 然后进入到密钥,将证书设置为可信任。
<2>手机上安装SSL证书
step1:charles - help - SSL Proxying,点击Install Charles Root Certificate on a Mobile Device or Remote Browser
step2:浏览器输入【chls.pro/ssl】 下载证书(手机连接代理的前提下)【安卓手机安装证书: 浏览器输入:http://www.charlesproxy.com/getssl 安装 Charles SSL 证书】
(安卓手机安装证书:在设置- 设备安全-从存储设备安全证书 ,找到证书的下载路径,点击进行安装。如果要删除之前安装的证书,在设置- (更多)- 安全,找到信任的证书,进行移除操作)
注意: 如果手机上下载证书后,找不到证书,可能是因为证书是pem后缀的,需要将pem改成crt或者cer
1):当iOS打不开【chls.pro/ssl】网址时,按如下操作:【charles】->【proxy】->【Proxies】:
。再次打开手机浏览器即可。
2)下载安装好证书以后,iPhone信任证书:【设置】->【通用】->【关于本机】->【证书信任设置】->将证书设置为信任。
<3>设置支持https请求:Proxy - SSL Proxying Settings,点击add,进行如下设置:
四、注册码激活charles
1、问题:因为charles是收费的,未激活的charles只有30天试用期,试用期过后,未付费仍然可以继续使用,但是每次使用时间不能超过30分钟,并且启动时会有10秒钟延迟
2、解决方法
打开该网址 https://www.zzzmode.com/mytools/charles/
输入版本号或者其他自定义name,点击生成,跳出弹框,复制License Key的值
将生成的注册码复制到chales的 help - Registered Name里,之后重新打开即可。