android开发之在Mac用charles抓包(http,https)

时间:2024-05-20 09:10:23

前言:最近换了公司进行android项目的开发,由于公司的需要由用了多少年的windows开发项目换成了mac进行开发。既然由windows换成了mac,自然各种开发工具也要换成mac版本的才行,所以今天要讲的就是在mac上的用charles进行抓包来辅助项目的开发。之所以直到现在才写这篇文章,重要是因为入职到现在一直在忙,好不容易才现在有了时间和精力。

今天之所以专门讲一下charles抓包,一个主要的原因就是吐槽在网上关于Charles实现Android抓包的配置说明鱼龙混杂,根本没有一个系统清晰的说明,看的多了容易让人抓狂。好了,废话不多少了,下面就是按照我自己的在mac上使用charles的步骤来给大家瞧一瞧,保证你也可以顺利的使用charles来抓包。

发车了,发车了,上车走起。。。


第一步:下载mac版charles安装包并进行常规的安装。

这里给出我的charles**版的下载地址:http://download.****.net/download/mysimplelove/10184323

这里简单说一下怎么使用这个**版从而可以达到免费的目的:

在安装界面拷贝安装包里面解压出来的charlse.jar,这个是**后的jar文件,替换原始jar,步骤如下:
1.通过Finder进入应用程序目录,找到Charlse,右键 -> 显示包内容,进入Contents -> Java, 把上面拷贝的charlse.jar文件粘贴到这里。
2.打开Charlse, 等待30秒,打开菜单 Help->Register, 随便输入用户名和license,保存,这里会提示重启Charlse。

只需这两步,就可以实现charles的**使用了,不需要付费了。


第二步;打开charles,配置代理端口号。

界面操作:Proxy -》 Proxy Settings -》 Port,port可以随便指定,我这里取的8888:

android开发之在Mac用charles抓包(http,https)



android开发之在Mac用charles抓包(http,https)


第三步:配置手机的代理ip。

Android手机的网络代理一般在wifi设置页面,点击当前连着的wifi,手动修改代理配置,然后将你的电脑ip和第一步中配置的端口号填写到手机上即可。

友情提示:在终端执行  ifconfig 命令就可以看到你的电脑的ip。


下面直接上图演示怎么配置手机的代理:

android开发之在Mac用charles抓包(http,https)


android开发之在Mac用charles抓包(http,https)

有了上面的正确的代理的配置,charles就可以对你的手机的http请求抓取数据包了。

如果你的需求只是用charles对http请求抓包,看到这就可以了,因为下面的篇幅将要介绍怎么用charles对https请求抓取数据包。


需要看对https请求抓取数据的老铁们接着往下看喽。。。


第四步:实现https抓包。(请仔细看,这里有些繁琐

先迈出一小步:你需要为charles添加SSL Proxiyng。

具体的步骤是:Proxy -》 SSL Proxiyng Settings -》勾选“Enable SSL Proxying”,并点击下方的Add,请依照下图这样配置:

android开发之在Mac用charles抓包(http,https)


android开发之在Mac用charles抓包(http,https)

android开发之在Mac用charles抓包(http,https)


host位置填入的是你要抓的域名或者ip(这里用通配符*,表示抓去所有的https请求),port一般填入为443。


再迈出最后一大步:下载手机的SSL证书并在手机上安装该证书。(这是最后关键的一步)

界面操作:你需要点击help -》SSL Proxying-》Save Charles Root Certificate,然后选择目录,保存一个类似于这样的“charles-ssl-proxying-certificate.pem”文件(我的环境是mac下,windows有可能文件后缀不一样) 

android开发之在Mac用charles抓包(http,https)


然后就是给手机安装这个保存的证书了,你就要按照我的步骤做的小心点了,不要出错了!!!

首先:就是命令行切换到刚才保存的证书所载的文件夹下,可用adb将证书文件推入手机中,

具体的命令参考:“adb push charles-ssl-proxying-certificate.pem sdcard/charles.pem”,表示将charles-ssl-proxying-certificate.pem推入sdcard中,并重命名为charles.pem,注意后缀必须是pem。


接着:就是打开手机的文件管理器,找到charles.pem,点击安装。如果安装成功,那么恭喜你现在手机的https访问数据,已经能被charles获取。

不过,不过,不过,如果你的手机出现了类似下图的说明,请继续执行下一步。

  android开发之在Mac用charles抓包(http,https)


打开手机设置 -》更多设置 -》系统安全 -》从存储设备安装 -》选择charles.pem,点击安装。如果这个地方显示安装成功,那么恭喜你已经能抓包https的数据了。 

友情提示:如果你是小米的用户,而且出现了问你要“凭据存储的密码”的弹窗,请继续往下看,需要多做一个屏幕锁的设置操作。

因为小米手机(或者其他手机)对sdcard文件的存取,做了安全限制。如果你没有设置屏幕锁,或者没有开启屏幕锁,操作sdcard文件时会出现上面的提示。这时,你需要设置一下屏幕锁,再重新安装一下就行了。


好了,到这里就到站了,按照我的步骤就可以用charles对http和https进行抓包了,这个步骤我是成功的实践者,如果你依然有问题导致了还是不能抓包,请找自己的解决方案。

see you