吾志所向,一往无前;愈挫愈奋,再接再厉

charles手机抓包

Posted on By Eironn

使用charles抓取手机包

只讲安卓手机,思路都是一样的。

一.原理

  • http请求的抓包不需要配置证书,只要配置好代理后,就可以抓到。

  • https的请求需要配置证书,配置好代理后,还需要将证书导入到浏览器中。

浏览器->设置请求代理->charles->转发请求->转发结果->返回给浏览器。

charles在转发请求以及结果时,充当了一个中间商的角色,收集了浏览器和后台服务器之间的所有的htpp请求和响应。因此我们可以导出har文件(也就是录制结果)。

那为什么https需要配置证书呢?

证书就是一个印章,来认证数据交互的双方是可以信任的,防止中间人的攻击。

证书是由CA签发的,而CA需要有公信力的大的组织。

而由charles签发的证书,告诉浏览器,Charles就是我们要请求的后台,这样我们才可以解密加密后的信息。

实际charles不是后台,只是伪装了后台,获取交互数据而已。

并且charles作为一个CA机构,签发的证书默认不被浏览器认可。因此需要我们手动导入到浏览器的受信任证书中。

当我们在电脑抓包时,导入证书到你使用的浏览器。

当我们抓手机包时,导入证书到你的手机浏览器。

当我们抓小程序包时,小程序调用的也是你的浏览器,所以也要导入证书到你的浏览器。

并且小程序抓包,必须开启调试模式才可以。

如果看懂了以上,实际上我们要实现手机抓包,第一是配置手机网络的代理,第二是导入证书到手机浏览器。

二.步骤

1.设置手机的代理

原理就是,手机连接的WiFi和你电脑使用的网络是想通的。即手机所在的WiFi网络是可以ping通你电脑所在的网络的。

一般情况下,我们手机连接的是WiFi,而在同一个路由器下,分配给手机的ip是WiFi内的ip,和WiFi同网段的设备,无法直接ping通手机网络,但是手机网络是可以ping通和WiFi同网段的设备的。

因此,我们设置手机的WiFi,转发到你的电脑所在的ip,并且指定你电脑安装charles使用的端口,这样你手机所有的请求全部经过charles了,我们可以借此来实现抓包。(我们知道不能随意连陌生的WiFi,就是因为你连接到未知的WiFi后,你的所有的未加密的请求,对WiFi所有者来讲,都是透明的,如果引导你安装了某些软件,你加密的https请求都是可以破解的)

设置->无线和网络->WLAN->长按你连接的网络->修改->显示高级选项->代理选择手动->服务器主机名写入你电脑的ip->端口写charles的端口(默认8888)->保存。在进行上述操作前,却道charles电脑端在运行,执行完上面操作后,charles会提示你是否允许接口代理,选择是即可。

2.导入charles证书到你的手机。

通过qq或者微信接收到数据。

注意一点,qq的默认的保存路径是:Android/data/com.tencent.mobileqq/Tencent/QQfile_recv

网上路径都说是Tencent/QQfile_recv实际上现在新手机都是在Android/data下,然后是apk的包名,再然后才是你的数据。

导入证书的步骤是:

设置->搜索“安全”->更多安全设置->加密和凭据->从存储设备安装->选择刚才你qq接收的文件。