Mac使用Charles抓取ios手机APP中的https请求
1.配置Http代理
Port为监听端口号,默认为8888,勾选Enable transparent HTTP proxying,接着勾选SOCKS proxy,可以监听Socks请求
2.安装Charles Root Certificate,路径为Help->SSL Proxying ->InstallCharles Root Certificate
3.安装后在钥匙串中会有一条未信任的证书,双击该证书
4.跳转到该证书的设置,修改到如图
4.配置SSL代理,Proxy->SSL Proxying Settings选项,点add添加需要监视的域名,支持 *号通配符,端口一般都是443
5.配置手机的证书 help->SSL Proxying install Charles
6.使用手机配置代理地址ip和端口号,配置完成之后在手机浏览器中输入chls.pro/ssl下载Charles证书并根据提示安装
7.安装完成后IOS手机需要在设置->通用->描述文件与设备管理中信任安装的Charles Proxy CA证书
8.最后需要在IOS手机中设置->通用->关于本机->证书信任设置-> 找到charles proxy custom root certificate然后信任该证书即可
Charles 使用过程中遇到问题
1、部分APP无法正常请求网络;网页能打开,但是显示的全是HTML代码。
解决: 我之前设置的端口号是8888, 我改为8899就解决了。
2、手机安装证书,无法打开chls.pro/ssl
解决: 应该也是端口号问题,更改端口号后,手机技能能通过该网址下载证书了。
3、SSL Proxying not enabled for this host: enable in Proxy Settings, SSL locations
解决如下:
4、You may need to configure your browser or application to trust the Charles Root Certificate. See SSL Proxying in the Help menu.
解决如下:
iPhone系统更新到iOS 10.3后,https的请求都会失败,提示错误信息为Failure SSLHandshake: Received fatal alert: unknown_ca 和You may need to configure your browser or application to trust the Charles Root Certificate. 然而之前任何问题都没有,并且相关设置都正确:Mac上安装了Charles的根证书,并且设置了始终信任,然后手机上也登录了http://chls.pro/ssl安装了描述文件,一切都按正常程序走的,但是错误始终无法解决.
相关环境:
Charles 4.2
iPhone 7P iOS 11.0.2
原因
设置->通用->描述文件->charles proxy custom root certificate
虽然charles的根证书已经在安装列表中显示,但它是被关闭的。在iOS 10.3之前,当你将安装一个自定义证书,iOS会默认信任,不需要进一步的设置。而iOS 10.3之后,安装新的自定义证书默认是不受信任的。如果要信任已安装的自定义证书,需要手动打开开关以信任证书。
解决
设置->通用->关于本机->证书信任设置-> 找到charles proxy custom root certificate然后信任该证书即可.