使用Charles对Https请求进行抓包

Posted by yycoder on July 28, 2017

由于近期公司的API接口升级成https协议,有时候想查看一下线上环境的返回结果, 按照Charles抓取http协议数据的方式是不能正确的看到https协议请求和返回结果的, 那Charles能抓取https数据吗?
答案是:可以的!
接下来我们看下如何操作:

PC安装Charles SSL根证书

选择Install Charles Root Certificate菜单,Charles工具栏路径如下:

Help -> SSL Proxying -> Install Charles Root Certificate

设置Charles http代理设置

选择Proxy Setting菜单,Charles工具栏路径如下:

Proxy -> Proxy Setting

勾选上Install Charles Root Certificate,一般使用默认端口8888,然后点击ok

iPhone手机设置http代理

前提是手机和电脑在一个局域网,打开手机设置 -> 无线局域网,点击网络详情, HTTP代理手动,并设置服务器为电脑IP,端口设置成Charles http代理设置的端口8888,即可

iPhone手机安装Charles SSL根证书

Charles选择Install Charles Root Certificate on a Mobile Device or Remote Browser,Charles工具栏路径如下:

Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Remote Browser


然后打开手机的浏览器访问chl.pro/ssl,按照提示安装证书

Charles SSL Proxying 设置

选择CharlesProxy -> SSL Proxying Setting ,点击Add,Host和Port都填写*, 抓取任意站点、任意端口的数据,勾选Enable SSL Proxying

特别要注意的事项

不知道从什么时候开始 iOS多了个信任的操作 原来这块貌似是默认是信任吧,如果不勾选,将会出现unknown的错误 在设置 -> 通用 -> 关于本机 -> 证书信任设置