一、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】证书信任设置路径:设置-通用-关于本机-证书信任设置
安卓端机型较多针对不同的机型安装证书略有差别,介绍两种方法 【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连接是是否正常,判断方法:清除当前请求内容,浏览器打开百度,看是否有请求和返回等信息