背景:
移动开发的朋友经常会需要对手机网页进行抓包,查看移动端app下webview请求的接口,以及mock数据测试等。
我这里使用了charles,我是windows系统,也很方便使用。
安装:
安装charles,charles最好是安装官方网站的,其他网站有破解中文版的安装后有时候会有一些功能异常。
连接代理:
1、电脑端安装证书:在charles软件中点帮助——ssl代理——安装charles root证书,根据提示一步一步安装证书;
2、手机连代理:在手机保证和电脑连接同一个wifi的前提下,开启手机代理,输入服务器地址:例如 :192.168.x.xxx,端口号为:8888,(端口号可以在charles里自己配置,默认8888)
有时候新手机连接代理,charles会提示是否允许,点击allow;
3、手机装证书:点击帮助——ssl代理——在移动设备或远程浏览器上安装charles root证书,看到如下界面:
如果没提示需要在手机端安装证书后设置一下(设置方法:ios : 设置——通用——关于本机——证书信任设置——找到证书——开启信任开关);
浏览器输入:chls.pro/ssl,打开根据提示安装证书,
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,就可以了。