charles 使用中手机无法抓取https包(iphone)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了charles 使用中手机无法抓取https包(iphone)相关的知识,希望对你有一定的参考价值。
参考技术A 问题:iphone按照官方步骤安装证书后手机无法抓https包,且https页面无法打开,手机上显示高级私密,点击详细表示证书出错,
检查证书发现已经被验证。
问题确定:证书虽然被验证但是没有被打开。
解决方案:将证书开关打开
证书安装后一共有两个地方需要被设置:
第一步:验证
打开【设置】 > 【通用】 > 【描述文件】 > 打开"Charles Proxy CA"证书,显示已验证。
第二步:打开
打开【设置】 -> 【通用】 -> 【关于本机】 -> 【证书信任设置】(这个在页面最下面),将Charles证书开关打开。
电脑版的一开始也无法抓到包,重新装了两次证书还是无法抓到,但是此时iphone可以抓到包,本地的python请求可以抓到包,唯独chrome无法抓到包,问题定位到Chrome上,仔细查找原来是因为它:
这个相当于一个代理,暂停一下,再重启chrome就可以开心的抓包了。
手机通过Charles抓取https包
因为fiddler不能在mac上使用,而Charles是跨平台的,可以在mac上使用,所以需要了解一下Charles的使用
安装破解版Charles
下载破解版包,先启动一次未破解版的Charles,然后再替换包内容的java下的Charles.jar
破解版下载地址(如果不幸的又不能下载了,那就网上随便搜一个吧):
http://download.csdn.net/download/m694449212/9770583
https://pan.baidu.com/share/link?shareid=2768818025&uk=1281550132
第二个网址为破解的charless.jar,第一个下载地址中的有点问题
手机通过Charles抓取https
第一步:配置Charles,允许抓取https包
Proxy->SSL Proxying Settings…,勾选Enable SSL Proxying,Add一个locations,通过通配符* 抓取所有域名的https。(如果想只抓取某个域名的,设置具体域名的即可)
Host可以使用通配符*或?进行匹配,如果想抓取所有域名的,直接用*即可(Add一个新的Location,然后直接点OK就创建了),如果特定想抓取某个域名的,可以直接在Host那里写具体Host。
第二步:手机端配置PC的代理
1.在手机的WIFI设置里,修改网络,手动添加代理。
代理服务器主机名:使用PC的本机IP地址
代理服务器端口:使用Charles设置的Port值,Charles按照下图方式配置Port
2.第一次配置完代理,需要在PC端进行允许操作,详见下图的Allow(如果不小心关了下面的弹框,可以重新配置一下手机代理或在Charles里手动添加)
Charles里添加允许访问的IP的方法:
第三步:PC端Charles安装https证书
Help->SSL Proxying ->Install Charles Root Certificate,然后在钥匙串中信任证书即可
第四步:手机端下载Charles的证书
根据Help->SSL Proxying ->Install Charles Root Certificate on Mobile Device or Remote Browser...获得下载证书的地址,操作如下图:
手机浏览器打开网址下载证书:http://charlesproxy.com/getssl
安装证书即可,特殊机型说明如下:
1.小米安装比较特殊,需要在设置->其他高级设置->安全和隐私->凭据存储->从存储设备安装->选择下载的证书安装
2.ios10以上系统,需要在设置->通用->关于本机,信任安装的证书
然后就可以抓包了
抓取包注意事项:如果要抓取Safari等浏览器的包,必须勾选Proxy->macOS Proxy,否则没进行抓包
以上是关于charles 使用中手机无法抓取https包(iphone)的主要内容,如果未能解决你的问题,请参考以下文章
Charles抓包以及解决抓取HTTPS请求unknown的问题