关于Charles最好先了解其原理和作用,再安装并实际操作抓取http和https包,最后得到的感受是,因为这样厉害的工具的存在,网络上的消息确实非常不安全,连具有加密功能的https协议在信息传输过程中,通过Charles也可以获取API的方法,url,请求消息和响应消息。
一. 注意事项
在Android7之后其系统Google 推出更加严格的安全机制。 不能抓到https包了. 这个问题有2个解决办法.
1. 如果是自己开发的apk, 可以在代码中增加代码,至于具体怎么配置,Google 官方 给出超级全面解释 :
让 Android 开发加入以下代码并重新打包,就可以抓到 Android 7.0 以上系统 https 的包了。不展开讨论,能用就行。这是一种既简单又安全的办法,在调试时可以信任的证书(正式包不可用)。
2. 抓第三方 app 的 https 包
使用 Android 7.0 以下的系统,安装应用,并抓包.
成功案例: 魅族5s + charles4.2.8
二. http抓包
不再赘述, charles 和 手机 配置即可.
三. https抓包
当抓取的包是https协议时,就不那么好玩了,每个接口下都是“Unknown”.
https抓包需要安装SSL证书,网上大部分是关于手机上如何抓取https协议包,而关于windows系统下抓取浏览器访问Web应用的https协议包的配置和操作比较少。手机和浏览器抓https的原理应该是一致的,可以借鉴手机SSL的配置来完成浏览器上SSL的配置。
1、电脑安装SSL证书
通过Charles安装,进入Charles-》Help-》SSL Proxying-》Install Charles Root Certificate ,会打开证书,安装进去,下图是证书已经安装成功的结果。
注意:
(1)由于当前版本较高,ssl证书已经在电脑上了,但如果碰到进入相应界面,提示“证书不存在”,可以到官网去下载与版本配套的证书
(2)按照提示步骤一步一步安装完ssl证书以后,返回证书界面,会看到此根证书不被信任,在证书上右键 - 显示详情 ,展开信任 选择 始终信任,然后点击左上角的关闭,系统会弹出授权提示框,授权同意修改,回到列表,稍等,证书就刷新了
2、
2.1 电脑端抓https - 浏览器安装ssl证书
进入Charles-》Help-》SSL Proxying-》Install Charles Root Certificate on a Mobile Device or Remote Browser,
浏览器ssl证书下载地址
根据提示,在浏览器地址栏输入“chls.pro/ssl”下载证书
浏览器ssl证书文件
在浏览器上安装证书,以chrome为例
Chrome安装ssl证书
至此,电脑和浏览器的证书都安装成功
2.2 手机端抓https - 设置中安装ssl证书
a.获取地址:
点击 Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device,出现弹窗得到地址 chls.pro/ssl (不用动,这个地址要输入到手机浏览器)。
b. 手机安装SSL证书:
在手机浏览器输入地址 chls.pro/ssl 就会出现如下证书安装页面,无论跳出什么页面和弹窗都点击安装,直至完成。一定要记住证书安装在哪个目录下了!! 我下载的是pem文件,据说crt文件也可以. 留意导入到哪个文件夹下。
注意1:① 设置好手机HTTP代理;② 电脑上Charles要开着;不然输入这个网址 chls.pro/ssl 安装不了证书,打开的是Charles官网。③ 一定要记住证书安装在哪个目录下了!
3. 手机信任证书
魅族手机:设置--指纹和安全--设备管理和凭证--从存储盘安装
荣耀8 : 设置---高级设置---安全----从SD卡安装---内部存储空间,
找到之前证书的安装位置,点击证书,弹出为证书命名,命名好之后点击确定。
2.3iOS抓https
a. Safari浏览器 打开chls.pro/ssl 下载证书,
[重要] 在设置 -- 描述文件 中, 安装 描述文件, 输入密码, 安装成功后,显示"已验证"
打开 在:关于本机 -- [滑到最下] 证书信任设置
3、Charles使能https抓包功能
进入Charles - 》 Proxy - 》 Proxying Settings
Charles设置ssl
打开SSL设置界面,将图上所示复选框选中
② 点击 Proxy -> SSL Proxying Settings...,勾选 Enable SSL Proxying,点击 Add。Host 设置要抓取的 https 接口
网络报文过滤
到此配置完毕,再次抓取https报文,就不会全部都是unknown了
4、Q&A
如此配置后,当Charles在运行时,没有安装ssl的证书的浏览器访问Web应用会出现问题
浏览器访问Web应用失败,可以清晰看到失败原因为证书认证失败,而证书机构为Charles,解决办法有两个,
(1)关闭Charles
(2)在浏览器上安装ssl证书