iOS HTTPS 抓包工具配置说明
相信各位在移动端开发过程中一定遇到抓取请求的场景,本文主要显示 iOS 11 在 Charles、Fiddler、Whistle 下HTTPS抓包配置,欢迎留言区补充其他工具。PS.留言使用 Disqus 插件需要科学上网
。
已经熟悉以上三个工具基础配置,仅仅需要解决抓包 iOS 下 HTTPS 问题的同学可以直接打开锦囊
Charles
- 官网
- 按照 license 收费,收费后终身享受升级,仅限 OS X 平台
HTTP 抓包
1.确保手机与主机处于同一局域网内。
查看本机 IP,使用 ifconfig
命令查看本机 IP;或者打开系统设置查看 IP 如截图;
当前本机 IP 192.168.191.4
2.设置手机 iOS 网络代理
设置
-> 无线局域网
-> HTTP 代理
-> 手动
服务器:192.168.191.4
端口:8888
3.配置完成后,在手机端访问任何一个 App 或网页,本机 charles 会弹出提示,点击 Allow
此时已经可以抓取 HTTP 数据了
HTTPS 抓包
1.信任证书 本机
打开 charles 后如下图操作,本机信任 charles 证书,注意 此处选择system
2.信任证书 手机
打开 safari
地址输入192.168.191.4:8888
或chls.pro/ssl
点击安装,此时会弹出要求需要输入手机密码,完成后证书安装成功。
此时查看通用
->描述文件
中 charles proxy ca 已变成已验证
。
注意 自 iOS 10.3 以上,还需要多一步操作,手动信任自定义根证书,才能确保证书安装并已启用;如图所示;
关于本机
->证书信任设置
启用 charles proxy ca 截图详见锦囊
3. Charles 设置启用 SSL Proxy
Proxy
->SSL Proxy setting
Enabled SSL Proxying
同时增加希望抓取的域名,例如:*.jd.com
端口 443
配置完成 : )
Fiddler
- 官网
- 微软出品,免费,由于需要 .Net 库仅 Windows 平台
HTTP 抓包
配置与 Charles
配置相同端口略有不同,此处不再重复
HTTPS 抓包配置
- 勾选拦截 HTTPS 请求
- 安装证书(电脑端 & 手机端)
Whistle
- 官网
- 国人开发,开源 MIT 协议,基于 NodeJS 跨平台
- 推荐
工具准备
nodejs v0.10.0+
npm i -g whistle
w2 start
完成上面几步操作后,此时8899
端口已经常驻后台。
界面
Chrome 插件
whistle 提供了一个基于 Chrome 的插件,可以方便切换代理,查看网络,编辑规则等,不过很遗憾作者已经将插件在 Web Store 下架,现在搜索不到,我把本地 0.10.0 版本打包成 crx 上传在 Google Driver 可以访问 下载
或者改用另外一个强大的插件 Proxy SwitchyOmega
HTTPS 拦截配置
iOS 11 HTTPS 抓包锦囊
注意 自 iOS 10.3 以后,无论使用上面哪一种工具抓包,安装完 ca 证书以后,还需要多一步操作,才能确保证书安装并已启用;
通用
-> 关于本机
-> 证书信任设置
-> 启用相对应的证书,就可以看到工具中抓取到相应的 HTTPS 请求。
这点跟苹果的 one more thing 貌似有那么一点不谋而合。
have fun :D