Charles代理调试

最近在做APP上的活动页面的调试工作,在调试的过程中遇到了一些麻烦,比如线上报bug,本地很难在浏览器上模拟真机复现,频繁改动代码,频繁上线很麻烦,于是调研了一下抓包工具,charles,一下是使用教程及遇到的一些问题和解决方法:

一.需要的工具

1.下载charles并安装

2.需要一台有root权限的手机

注意:

小米手机自带root为不完整root,需要进行完整root(即解锁system)。方法如下:

安装adb工具 :brew install Caskroom/cask/android-platform-tools# 没有安装homebrew的先安装homebrew

root  :  adb devices# 测试adb是否安装成功,成功了会出现设备的hash值

           adb root

           adb disable-verity# 禁用系统验证

二.配置http代理

proxy -> proxy settings -> proxies


选择监听8888端口,并勾选Enable SOCKS proxy这样也可以监听浏览器的http请求



三.配置SSL代理

proxy -> SSL Proxy Settings

点add添加需要监视的域名,支持 *号通配符,端口一般都是443


四.为手机配置http代理

以小米手机为例

设置 -> wlan -> 选择一个网络并链接 -> 点击此网络的详情(右边的箭头icon)-> 设置代理为手动 -> 主机名为你的电脑ip -> 端口号8888 -> 点击右上角对号设置成功 


这时候charles会出现是否允许此设备链接的提示,点击allow就行啦

五.为手机安装根证书

Charles的根证书下载网址: chls.pro/ssl 

以小米手机为例:

1.需要下载一个第三方浏览器

在浏览器中输入 chls.pro/ssl 下载证书

更改证书后缀为.crt : 

      系统工具-文件管理-手机-QQBrowser-其他(证书的文件路径),找到charles-proxy-ssl-proxying-certificate.pem,更改后缀

设置-> wlan -> 下滑到高级设置 -> 安装证书 -> 找到刚刚修改过的文件点击并安装 -> 系统提示安装成功


六.为电脑安装根证书

Help -> SSL Proxy -> install charles root certicate

进入钥匙串信任此证书


七.访问需要代理的地址


找到需要代理的地址,右键map local 



设置local path,点击choose可以选择本地文件,确认

这样就代理成功啦

八.可能会出现的问题

当你访问https的资源时,出现以下情况


查看Help -> SSL Proxying 



说明根证书没有安装成功,在Android 7.0及以上版本会出现这样的问题

解决方法:将证书安装到系统证书中(需要root)

系统证书的目录是:/system/etc/security/cacerts/

每个证书的命名规则为:<Certificate_Hash>.<Number>

Certificate_Hash表示证书文件的hash值,Number是为了防止证书文件的hash值一致而增加的后缀

证书的hash值可以由命令计算出来,在终端输入openssl x509 -subject_hash_old -in <Certificate_File>,其中Certificate_File为证书路径,将证书重命名为hash.0放入系统证书目录,之后你就可以正常抓包了。


1人点赞

日记本

"小礼物走一走,来简书关注我"



作者:贺子微
链接:https://www.jianshu.com/p/29f7f66ef7fd
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。