Charles是一款很实用,界面很友好(至少跟fiddler比起来),功能强大的抓包神器,因为它是基于 java 开发的,所以跨平台,Mac、Linux、Windows下都是可以使用的,并且在Android和iOS设备上通用。它的原理是通过成为电脑或者移动设备的代理截取请求和请求结果达到分析抓包的目的。本文将介绍Charles的安装,如何配置代理和一些基础功能的使用介绍以及本人使用过程中踩到的坑。如有错误,欢迎指正。
一,网络与防火墙设置
1.1网络
电脑和手机连接同一wifi下,查看手机的ip地址,如10.X.X.X
在电脑上打开cmd,使用命令 ping 10.X.X.X,如下图,代表电脑和手机之间网络畅通
1.2防火墙
打开控制面板,找到防火墙选项
使用关闭选项关闭所有防火墙
确保所有防火墙是关闭状态,
二,Charles代理配置使用
配置代理
【注】这一步的目的是为了移动设备连接到Charles,这样移动设备发起的所有请求才能在Charles中看到。以下所有演示截图皆来自Android设备,iOS设备大同小异。
2.1使用Charles工具查看
PC本地IP和端口号(端口号默认为8888,也可自行修改),选择“Help->Local IP Address”
查看的结果例如下图,使用来自wifi分配的IP地址,
如不确定,可在“网络连接”中查看wlan状态
2.2查看设置代理默认端口号
“Proxy->Proxy Settings”
2.3设置wifi
长按Android设备当前连接的WiFi,选择”Modify network”->”Advanced options”->“Proxy”->”Manual”,如下图所示,输入”Proxy hostname”和”Proxy port”(即上一步查看的IP地址和端口号)然后点击保存,见下图:
2.4allowip
点击保存后,Charles会弹出connection确认弹窗,选择”Allow”,见下图:
2.5手动设置allowip
注意,如果首次连接时,Charles未出现该提示,请手动进入Charles的设置选项,添加当前手机的IP,选择“Proxy->Access Control Settings”
点击“Add”手动添加IP
三,抓取app请求数据
3.1在手机上打开app,进行刷新或浏览的操作
3.2查看抓取的数据包的内容
四,分析修改指定http请求的header
4.1查看app请求头
连接和响应
请求头
4.2分析指定http请求
将发往远程服务器的请求修改到本地电脑运行的测试环境
例如:http://vdn.xx.xxx.cn/api2/live.do?channel=pa://cctv_p2p_hdcctv13
转发到本地服务器地址:127.0.0.1:8080
上面url拆分成需要填的格式,按照协议、host、端口、对应的程序路径、以及参数字符串
例如:
链接:http://vdn.xx.xxx.cn/api2/live.do?channel=pa://cctv_p2p_hdcctv13
协议:http
Host:vdn.xx.xxx.cn
端口:80
程序路径:/api2/live.do
参数字符串:channel=pa://cctv_p2p_hdcctv13
4.3修改指定http请求
打开Charles -> tools -> Map Local Settings -> Enable Map Local启用映射本地,
点击add添加规则,
将4.2信息输入到Map From框内,map to输入本地服务器链接
也可将指定文件作为返回信息,点击choose,选择该文件即可