一、前言
在移动端开发的时候通常需要获取后端返回的数据, 打日志和调试也可以,只是比较麻烦,通过charles抓包可以很方便的看到后端返回来的数据格式
二、抓取Http报文
1、下载安装charles
进入官网:Download a Free Trial of Charles • Charles Web Debugging Proxy ,找到自己系统合适的版本,点击下载, 然后安装, 直接下一步,直到完成。
2、设置
(1)
这个勾上是抓windows系统的包的, 移动端一般用不到, 直接沟去掉,否则windows上的一些网页会打不开。
(2)Structure和Sequence
这个是charles抓包的两种展示界面, 可以根据自己的喜好和需要来查看抓取的包
(3)过滤网络请求
通常情况下我们需要对网络请求进行过滤,查看指定IP或者域名的请求,例如我测试我的app, 当然只想抓取我自己的app的请求,有以下两种方法:
1> 在Sequence模式下输入filter来过滤请求,如下图:
2>在 Charles 的菜单栏选择 “Proxy”–>“Recording Settings”,然后选择 Include 栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。如下图所示: port为*代表任意端口
(4) 要截取 手机上的网络请求,我们首先需要将 Charles 的代理功能打开。在 Charles 的菜单栏上选择 “Proxy”–>“Proxy Settings”,填入代理端口 ,默认是8888,也可以自己改,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的设置
(5)手机设置
要抓包手机必须和电脑连接同一内网, 然后打开手机网络,将代理设置为手动, 填入电脑的IP地址,和刚才设置的端口,保存即可。 这样charles就能抓到你App请求的包了, 第一次拦截会弹出以下对话框, 点击Allow即可:
三、抓取https包设置
1、经过上述配置后只能抓取http报文,对于Https的报文,则会显示Unknown,原因是对于Https的报文采用了证书和密钥加密,而安装了Charles证书后,对于手机,Charles是伪装的服务器,对于服务器,Charles是伪装的手机,这样证书和密钥都是Charles提供的,故报文接口数据包对Charles而言,完全是裸着的
不安装证书截取https的链接是unknown
2、电脑安装证书
会弹出来如下对话框:
点击安装证书,一路点下一步即可,直到弹出导入成功的对话框, 成功后点击确定。
3、为手机安装证书
点击Install Charles Root Certificate on a Mobile Device or Remote Browser这一项, 会弹出一个对话框,上面写了让你下载证书的地址:
手机通过第二步连上代理后, 用手机浏览器打开上面红框里的地址,会跳出让你下载证书的对话框, 点击下载安装即可,现在大部分手机直接就下载到指定路径,安装这一步都可以省略,下载成功即可。
4、配置charles
四、注意事项
1、前提:保证手机和电脑在同一局域网下。
2、如果抓不到任何包, 可以尝试在命令行输入: ping 手机ip地址 来查看是否能ping通手机, 如果能ping通手机说明手机配置没问题, 再使用adb shell进入手机shell, 然后 ping 电脑ip地址 , 看手机是否能ping通电脑, 如果ping不通肯定是防火墙屏蔽了,关闭防火墙, 只有手机和电脑互相ping通了才能抓到包
五、破解
如果不破解的话30分钟后会自动关闭,每次要重新打开特别烦,破解参考: