charles如何抓取手机的数据

        在app开发中,如果我们要对用实体的手机进行测试是一件非常麻烦的事情,因为我们无法像在电脑上一样查看前后端的交互过程,从而判断出问题的根源。那有没有方法让我们可以捕获通过手机网卡的数据包呢,办法当然有,我们介绍一种通过代理服务器加抓包软件的方式来实现。
需要准备:电脑一台 手机一部 局域网 代理服务器 抓包软件

注:采用Charles可以在实现抓包功能的同时还可以作为代理服务器,所以就是用使用Charles

实现原理:

        在一个局域网中,正常的上网流程是这样的,在手机上访问网络的数据会发送到局域网网关,然后通过网关发送到互联网;互联网的返回数据会原路返回,发送到手机上。这样的弊端是,我们无法获取数据网卡的交互数据。代理方式会改变手机数据的传送方式,手机产生的数据会发送到代理服务器(电脑),然后电脑会将数据转发出去,返回来的数据会重新发送给手机。通过这一层代理,手机产生的手机就会通过电脑的网口,在电脑上安装的抓包软件就可以获取到数据包中的内容了。


怎么实现

1.安装Charles

        可以直接在网络上搜索绿色版的Charles安装,不用激活,直接使用。这里采用mac安装进行后续说明。安装好以后可能会无法打开,需要在安全与隐私里面点击一下仍要打开,然后就没有问题了。


2.电脑设置为代理服务器

        打开Charles,进入proxysettings,打开代理服务器,设置好端口号,开启HTTP透传代理。代理服务器就设置完成了。

        


3.手机设置电脑为代理

        查看电脑IP地址并记录下来,然后进手机设置网络的代理服务,打开手机,进入 设置 >wlan >当前连接的网络>高级>代理设置;将代理设置为手动,主机名是电脑的IP,端口号是Charles设置的端口号。保存设置后电脑的Charles后檀树一个提示框,点击allow就可以了。

注:电脑与手机的网络需要在一个局域网里面。




4.打开抓包功能开始抓包

        开启网络抓包后,用手机上网,就会看到出现了好多抓包记录,如果很难区分哪些是手机的,哪些是pc的,可以在proxy里取消macOSproxy。然后抓到的数据就全部是手机产生的数据包了。



HTTPS问题

        https是经过加密传输的,所以当手机的https数据包代理到电脑时电脑可以捕获到数据但是无法解析,能看到的只是请求地址,以及一些unknown的请求内容。我们想要看到的是第二张图中的有内容的请求,这就需要安装证书和设置ssl代理了。


1.设置ssl代理

Charles进入SSL proxy settings,将需要查看协议具体内容的网址添加进去,如果觉得麻烦的话,可以添加一个*将所有的网址都添加进去。然后去浏览HTTPS的请求手机就会提示证书有问题,如果不觉得麻烦的话,可以一直点击继续,否则的话就需要安装证书了。



2.安装证书

证书需要在电脑和手机端同时安装,电脑端的安装如下:

        进入Charles点击help>SSL proxying,选择install Charles root certificate,在弹出框中选择添加,证书就会被添加到电脑中,还需要进行证书的信任才能完成证书的安装。



        进入钥匙串访问,打开证书,找到安装好的Charles证书;发现目前证书不可用。双击证书,在信任的下拉菜单中将使用系统默认改为始终信任,保存退出。证书就变为可用状态了



证书手机端的安装与设备有很大的差异,这里选择小米手机作为示范。

进入Charleshelp>SSL proxying,选择export Charles root certificate and…,弹出的对话框中输入密码。然后通过任意方式将证书发送到手机。在手机的设置>WLAN>高级设置>安装证书>找到证书>安装>输入提取密码>完成。







阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页