charles手机代理设置与mock数据
背景
移动开发经常需要对手机网页进行抓包,查看请求、mock测试等,这里记录下个人charles的使用。
安装与配置
安装charles,最好从官方网站安装,其他网站有破解中文版的安装后有时候会有一些功能异常。
连接代理
1、电脑端安装证书:在charles软件中点帮助——ssl代理——安装charles root证书,根据提示一步一步安装证书;
2、手机连代理:PC端点击帮助——ssl代理——在移动设备或远程浏览器上安装charles root证书,看到如下界面:
在手机保证和电脑连接同一个wifi的前提下,开启手机代理,输入本地IP地址:例如 :192.168.x.xxx,端口号为:8888,(端口号可以在charles里自己配置,默认8888)
有时候新手机连接代理,charles会提示是否允许,点击allow;
3、 下载描述文件:浏览器输入:chls.pro/ssl,会提示描述文件已下载,去设置——通用——vpn与设备管理——已下载的描述文件,找到刚才下载的描述文件点击安装;
4、手机证书信任设置:ios 手机在通用——关于本机——证书信任设置——打开后找到刚刚安装的证书,选择打开信任开关,安卓手机一般在辅助功能里可以找到(这里证书必须要打开,否则不能抓包https请求);
5、抓包:此时就可以在手机端访问app页面了,charles上会看到每个访问请求的接口,返回的数据等。
调试
数据劫持:
本地映射
本地映射主要让接口请求到本地json文件:
手机点击app页面,可以看到charles请求接口,选择charles左侧请求列表中最内层的接口,打开查看返回的数据,已经得到请求的数据,右键——本地映射,打开后已默认填好端口协议主机号,我们把查询(即参数)删除,也可以选择填入需要的参数,参数格式:*参数a=111*,映射到本地路径——选择——选择本地mock.json文件位置,保存,再次请求的时候,可以看到已经直接返回了我们的mock数据。
也可以在 tools --->Map Local 里设置,可同时设置多个
remote
remote主要让对应的请求地址映射到另一个请求地址上(比如线上地址映射到测试地址上)
tools --->Map Remote,设置的时候注意,http 服务器端口为 80 ,https 服务器端口号为 443。
rewrite
配置rewrite重写,适用于直接将线上offer劫持,进行错误复现和调试。
工具——重写——启用重写——添加——起名称——添加重写规则——类型选择正文——往哪里选择响应——
匹配值:比如:“url”
全部替换:"值:
也可以把线上的url放入另一个自定义字段中,进行统一替换,比如替换值:"url:"新url","url_old:"
注意
有时候charles都配置好了,但是抓到的接口数据都是unknow,在charles——代理——访问控制设置(Access control settings)——添加0.0.0.0/0,就可以了。