通过 Charles 抓 AppStore 上的请求

场景

  1. 连接Charles后,企业包,个人证书 Debug 包首次安装无法打开,每次切换到非 Charles 代理网络才能解决?
  2. 如何抓 App Store、Testflight 上的相关请求?
  3. 连接Charles后,无法打开 App Store?无法打开 Testflight?

分析

上述场景的主要原因是,苹果的部分请求开启了HTTPS的双向验证,或者Pin证书到了本地,SSL握手时会验证本地证书。
开启HTTPS抓包后,如果在Charles -> Proxy -> SSL Proxying Settings 中开启SSL代理,且指定*来匹配所有的域名,就会导致HTTPS双向验证失败,出现上述场景。

解决

解决方式一:

Charles正好提供了,指定一些请求不开启HTTPS代理
可以再Charles中找到抓包异常的请求后,过滤掉即可,就可以正常来使用了

解决方式二:

当然另外一种解决方式是,指定host开启HTTPS代理

示例

目前我收集到过滤掉的请求
upload successful

Host状态
play.itunes.apple.com:*true
api-edge.apps.apple.comtrue
amp-api-search-edge.apps.apple.com:*true
xp.apple.com:*true
gateway.icloud.com.cn:*true
bag.itunes.apple.com:*true
init.itunes.apple.com:*true
ppq.apple.com:*true
apps.mzstatic.com:*true
pd.itunes.apple.com:*true
.mzstatic.com:true
gsa.apple.com:*true
p25-buy.itunes.apple.com:*true
amp-api.apps.apple.com:*true
ssl.mzstatic.com:true