版本:v4.5.6
获取http请求
对mac进行代理
Proxy-->macOS Proxy打开代理,使得Mac上所有请求都通过Charles进行代理。
Proxy-->Proxy Setting设置监听端口号:8888
获取电脑ip地址:Help-->Local Ip Address
手机连击wifi,手机和电脑连接必须在同一个wifi下,然后手机连接代理
设置完成后,手机打开一个网址,charles就可以获取手机访问的包了。
charles获取https请求
http我们可以获取,但是网站是https的,如果想解析https包,就需要安装证书了。
Help-->SSL Proxying-->install Charles Root Certificate,首先在mac安装CA证书。
然后始终信任该证书:
Help-->SSL Proxying-->Install Charles Root Certificate On...,然后生成手机证书。
Help-->SSl Proxying-->Save...,然后保存该证书,会生成类似Charles-ssl-proxying.pem文件,把该文件后缀改为.crt,然后发送到Android手机,进行安装即可。
配置SSL代理:
添加要监听的域名,支持*通配符,端口一般443
在Android7.0手机获取https接口会出现unknown情况。系统不再信任用户导入的证书,自己项目里的自签名证书也会不受信任。这样导致,抓包软件可能抓不到https请求。如果你的证书不是ca证书,是自签名的证书,将无法请求服务器。谷歌在开发者文档上推荐解决方案:https://developer.android.google.cn/training/articles/security-config
1、在项目目录main/res/xml下新建network-security-config.xml文件
2、在AndroidManifest.xml文件下的application节点添加
android:networkSecurityConfig="@xml/network_security_config"
3、charles.pem是从Charles-ssl-proxying-certificate.crt复制的内容(用文本打开),放到项目raw/charles.pem下
创建network_security_config.xml
在res文件夹下创建xml文件夹,在xml文件下创建network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config>
<domain includeSubdomains="true">baidu.com</domain>
<trust-anchors>
<certificates src="@raw/charles" />
</trust-anchors>
</domain-config>
<domain-config>
<domain includeSubdomains="true">tabao.com</domain>
<trust-anchors>
<certificates src="@raw/charles" />
</trust-anchors>
</domain-config>
<debug-overrides>
<trust-anchors>
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
通过配置多个domain字段,把测试环境域名加上,过滤正式环境域名。这样只抓去测试环境域名。如果debug下抓正式环境的数据,在domain-config添加debug-overrides节点。这样只在debug下才能抓包
<network-security-config>
<domain-config>
<debug-overrides>
<domain includeSubdomains="true">正式环境域名</domain>
</debug-overrides>
<domain includeSubdomains="false">测试环境域名</domain>
<trust-anchors>
<certificates src="user"/>
</trust-anchors>
</domain-config>
</network-security-config>
通过在gradle配置里面设置一个boolean值来区分测试包还是正式包,如果是测试包,那么添加这个net_config的配置,否则正式包不配置
比如你的环境有如下域名 test.csdn.com,dev.csdn.com,uat.csdn.com, 那么 你只要添加csdn.com就能把这三个域名都包含进来。注意includeSubdomains必须为true才是模糊匹配,否则是精确匹配
Charles断点
选中要抓包的url,然后右键选择Breakpoints
然后在请求这个地址,会出现两次断点,第一次是请求断点用来修改请求参数;
第二次是请求回调断点,用来修改返回结果。
在Edit Response中可以对服务器返回内容进行修改。点击”Execute”进行提交。
可以很方便的用户修改后台数据的返回信息和请求参数等。