准备工作
Charles官网下载:Charles
破解Charles替换charles.jar包(提取码: g4jj),找到Applications/Charles,右击选择“显示包内容” > Contents > Java
配置使用
1、启动Charles;
2、第一次 Charles 会请求你给它设置系统代理的权限。需要将 Charles 设置成系统代理时,将菜单中的 Proxy > macOS Proxy 勾选;
3、将 Charles 的代理功能打开,在 Charles 的菜单栏上选择 Proxy > Proxy Settings,填入代理端口8888,并且勾上 “Enable transparent HTTP proxying” 就完成了在Charles 上的设置。
4、手机设置代理,Charles菜单的 Help > Local IP Address,即可在弹出的对话框中看到IP地址,我是取en0的IP地址。android手机打开wifi,点击已连接的wifi进入高级设置,打开手动代理,代理服务器主机名为en0的IP地址,代理服务器端口为8888。到此即完成http抓包的配置,打开需要抓包的程序,Charles弹出请求连接确认,点击allow即可。
抓取HTTPS请求数据
1、在Mac电脑上安装证书。点击 Charles菜单,选择 Help > SSL Proxying > Install Charles Root Certificate,即可在 KeyChain看到添加好的证书,然后信任证书,右击证书 > 获取信息 > 选择始终信任即可。
2、手机端也需要下载证书。点击 Charles菜单,选择 Help > SSL Proxying > Install Charles Root Certificate on a Mobile Device or Remote Browser,会弹框提示你如何操作。去手机浏览器搜索“chls.pro/ssl“,然后下载安装即可,文件是以.crt结尾,如果不是,修改后缀名为.crt。
3、点击 Charles菜单,选择 Proxy > SSL Proxying Settings,勾选Enable SSL Proxying,点击add,Host填写你要抓取的域名(也可以是.com或.cn),Port填写443,点击OK。到此为止,就可以进行Https抓包操作了。
但是还有一点,请注意,7.0以上手机行不通,且往下看
Android7.0以上抓取https数据
方法一:
1、在你的AndroidManifest.xml文件中添加如下配置:
android:networkSecurityConfig="@xml/network_security_config"
2、在res目录下新建一个xml文件夹,之后在res/xml/路径下新建文件network_security_config.xmlres/xml/network_security_config.xml:
你要抓取的域名
//信任用户自己安装的证书
方法二:
1、同上;
2、在res目录下新建一个xml文件夹,之后在res/xml/路径下新建文件network_security_config.xml
res/xml/network_security_config.xml:
你要抓取的域名
3、点击 Charles菜单,选择 Help > SSL Proxying > Save Charles Root Certificate,将证书保存至本地;
4、在res目录下新建一个raw文件夹,将保存的证书文件放入res/raw/目录下,证书格式:pem,ca等,步骤2中的证书文件名,就是你放入res/raw/目录下文件的名字