Charles app抓包流程
一、Charles 抓包原理
Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析(这里类似中间人攻击)。配合 Charles 的 SSL 功能,Charles 还可以分析 HTTPS 协议。
二、Charles抓包为什么需要安装证书
Charles 作为一个“中间代理人”,当浏览器和服务器通信时,Charles接收服务器的证书,但动态生成一张证书发送给浏览器,也就是说Charles作为中间代理在浏览器和服务器之间通信,所以通信的数据可以被Charles拦截并解密。由于Charles更改了证书,浏览器校验不通过会给出安全警告,必须安装Charles的证书后才能进行正常访问。
三、手机连接Charles方法
【1】获取IP地址
(1)使用cmd命令行键入ipconfig来获取
(2)Charles菜单栏点击help-local IP address,即可查看当前IP地址
【2】手机连接代理
(1)打开手机设置-无线局域网-配置代理-选择手动
(2)在服务器中输入第一步获取到的IP地址
(3)端口获取方法Charles菜单中点击proxy-proxy settings,port框中的值就是端口号,输入该值即可,一般为4位阿拉伯数字
(4)输入完成iOS端需存储,安卓端直接返回,确认手机网络连接正常即可,未重新连接的可手动连接上网络
(5)在连接成功后会在PC端出现是否允许连接的提示,点击允许allow即可
(6)连接成功后手机端操作Charles可以看到相关网络请求信息,http请求可正常抓包,HTTPS还需要安装证书
四、手机抓包安装证书流程
1.IOS端
【1】Safari浏览器打开http://charlesproxy.com/getssl,会弹出证书安装允许和忽略两个提示选项,点击允许安装证书
【2】安装证书时需验证密码,输入手机的开机密码即可,验证通过后点击安装
【3】安装成功后会出现已安装描述文件,点击右上角的完成即可
【4】Ios11.0以下的版本到这一步证书就安装完可以使用了
【5】iOS11.X及以上版本,需要在证书信任设置中打开证书开关
【6】证书信任设置路径:设置-通用-关于本机-证书信任设置
2.Android端
安卓端机型较多针对不同的机型安装证书略有差别,介绍两种方法
【1】通用方法(适用于安卓版本较低的手机)
(1)手机自带浏览器打开http://charlesproxy.com/getssl,下载证书,打开下载文件会弹出为整数命名的提示,随意输入一个证书名称即可,最好是英文命名,自己便于识别
(2)命名后点击确认,就会弹出安装成功的提示,可以在设置-安全-受信任的凭证中查看用户已安装的证书
【2】目前市面上大部分手机,由于安全策略的调整,通用方法可下载证书文件,已经无法安装,需要使用第二种方法
(1)浏览器中下载证书文件(记住存储位置)
(2)打开设置-更多设置-安全—从手机存储安装,此时会打开文件管理器
(3)在文件管理器中找到下载的证书文件.Crt的文件
(4)点击该文件,验证设备密码验证成功后为证书命名
(5)接下来的步骤和通用方法一样,安装完成后即可(如果安装不成功就用UC浏览器下载证书后缀为pem的文件重新安装下证书在命名)
【3】安装完成可正常抓包了
六、常见问题处理方法
【1】抓取HTTPS 请求时需要在SSL Proxying Settings中Add需要抓取的服务地址
(1)点击Charles菜单中的proxy-SSL
Proxying Settings
(2)设置启用SSL代理能力,add一个服务地址
(3)在host中输入要代理的服务器地址,在port中输入端口号
(4)可输入*和443,即可解析大部分的服务地址
(5)添加成功后点击OK即可
HTTPS网络请求解析出现unknown
(1)检查证书是否安装,是否信任证书
(2)检查Charles设置中https代理解析是否被允许,需将Enable SSL Proxying勾选上
【3】想要的接口未抓取到
(1)电脑端是否设置了代理
(2)检查手机与Charles连接是是否正常,判断方法:清除当前请求内容,浏览器打开百度,看是否有请求和返回等信息