本文结合完美解决:Charles问题之抓Android手机应用Https包,出现Unknown一起,可以完美解决手机抓https包出现unknown的问题!!!
本文安装证书的部分已经不适用当前的Charles抓包工具认证方式了,需要将Charles证书写入到Android手机的系统证书里,详细看完美解决:Charles问题之抓Android手机应用Https包,出现Unknown
本文补充通过Charles抓取Android手机上应用Https包,出现Unknown的解决办法。
Charles问题之Windows10下抓取https包,出现unknown 已经介绍Charles抓取PC端Web应用的Https包出现Unknown的问题,分为三步:1、电脑安装Charles和Charles证书;2、浏览器设置代理并安装Charles证书;3、Charles使能Https抓包功能。
解决抓Android手机应用Https包出现Unknown也是三步,第1步与第3步与上述相同,不同点在第2步,因为抓取对象不同,故设置代理和安装Charles证书的对象由浏览器变为手机。
1、Android手机设置代理
(1)先打开电脑上Charles,将电脑设置为代理,这里主要设置代理的端口号。
这里需要注意的是,电脑上运行Charles,电脑就可以认为是一台代理服务器,电脑上的软件例如浏览器若打开了代理服务,网络请求会经过Charles,有些时候会影响网络访问
(2)手机联网,选择和电脑相同的网络,然后修改网络
例如电脑链接WiFi,手机也选择连接相同的WiFi,打开手机WLAN,在WLAN列表找到连接的网络,选中后,点击“修改网络”
进入网络详情界面,勾上“显示高级选项”,代理设置部分显示如下图,如不勾选,代理不会出现。
如上图所示,“代理”选择“手动”,“服务器主机名”填写Charles所在电脑的IP地址,该地址获取方式如下:
i 电脑端在运行(快捷键:Win + R)中输入“CMD”,打开如下所示命令行界面
ii 在命令行界面输入指令“ipconfig”,获取电脑IP信息
图上红线所示即为手机配置代理的服务器主机名,而手机配置代理的服务器端口号则为Charels上配置的代理端口号
主机名和端口填写完整后,点击保存按钮,至此手机的代理配置完成,手机上的应用网络请求会经过Charles这个代理
注意:手机配置好代理后,第一次进行网络请求,Charles会出现如下消息,点击同意,手机正常访问互联网,且Charles可以抓取HTTP报文
2、安装Charles证书
按照步骤1成功配置代理后,只能抓取手机的Http报文,对于Https的报文,则会显示Unknown,原因是对于Https的报文采用了证书和密钥加密,而安装了Charles证书后,对于手机,Charles是伪装的服务器,对于服务器,Charles是伪装的手机,这样证书和密钥都是Charles提供的,故报文接口数据包对Charles而言,完全是裸着的
(1)进入WLAN高级设置界面
(2)点击安装证书
注意:这里的证书文件和浏览器下载证书文件一样,也是通过Charles的提示从chnl.pro/ssl下载,打开手机浏览器,输入下载地址,自动下载证书文件
(3)选择通过手机浏览器下载好的Charles证书
注意:需要注意下载的证书文件的名称是否完整,正确的证书文件名称如上图,如果证书文件名称与上图不一致,根据作者实际使用Charles的经验,就算证书下载成功且手机提示安装成功,依然不能正确抓取https的报文的。此时我们需要换一个浏览器,建议QQ浏览器,同样在浏览器网址栏输入chls.pro/ssl下载证书,此时证书文件名称如上图,同时还需要注意如果下载的证书文件后缀非 .crt,需要将证书文件后缀修改为 .crt,文件名称不变,否则识别不了证书文件。
(4)给安装的证书命名并如下图设置
点击确定,至此手机上Charles证书安装成功,https的包不在显示为Unknown。
注意:除了手机在未安装证书的情况下,Charles抓取Https包会出现Unknown外,在网络出现问题,接口响应超时或者响应失败的情况也会出现Unknown