Android手机配置charles进行抓包

·  阅读 258
Android手机配置charles进行抓包

Charles 注册码生成, www.charles.ren

下面的讨论,基于安装好了charles,使用mac电脑的前提。

一.https 通信过程和中间人攻击的原理

1.png 如何抓包,原理说起来如下:

客户端给服务器端发消息的时候,中间人(Charles)截取客户端发送给服务器的请求,然后伪装成客户端与服务器进行通信;将服务器返回给客户端的内容发送给客户端,伪装成服务器与客户端进行通信。下面是一张简化的中间人抓包的图:

2.png

二.charles配置抓https包

1.开启proxy(代理),并设置端口,默认8888

5BAF16FB-DD25-40EA-B150-094F5210ACF5.png

2.电脑和手机上导入Charles根证书

2.1 电脑安装charles的证书

2031034-7c02301fa428c7f4.png 去Mac电脑的钥匙串中选择证书并给予信任,有时需要重新启动钥匙串应用

5DB3C3B9-7DE9-4B12-9D39-DE876D877E54.png

2.2 手机安装charles的证书

7710e18f31a2ccc5aab0e1b03b7c0384.png 接下来要配置手机和 charles 在同一个局域网,无论是charles证书下载的时候还是正式使用,都要先保证在同一个局域网。

下载证书,在同一局域网,浏览器中输入chls.pro/ssl。然后就会跳转一个页面,自动下载对应的pem证书文件到手机的文件系统了。

然后在手机中安装该pem证书,android手机的步骤一般是wlan列表拉到底,看到wlan偏好设置,点击安装证书。

我们在做这步之前,可以进入手机的文件管理器,然后移动下载的pem文件到相应的位置,保证在安装证书的页面可以找到该pem文件。

这样,在WLAN偏好设置的地方,点击安装证书,索引到对应的pem文件的位置,选中文件,然后就安装成功了。

最后回到设置页面,如下操作确认安装了证书:

43292547-F297-41E7-98BD-C0577B58D963.png

B2DC6CA6-32A4-4707-BA42-E3A8AB0B1F31.png

E40E3422-FB1A-4DFF-99E7-9A4666B1285C.png

BE4EE5C6-8E50-45B9-8E1E-F7C309562DA4.png

2.3 手机配置charles代理

接下来,我们要做的,就是配置手机的代理,和charles保持在同一个局域网中,步骤如下:

点击charles的Help->Local IP Address->记住ip地址172.21.205.137

1.png 点击手机wifi-》baidu_wifi->代理设置

3AE8201F820C893A0A60F4076DA17CC4.jpg

B25BF6297019300EB3B17B06E7CA9B92.jpg 保存后,就实现了手机配置charles,这时候,重启charles,有时候会有弹框提示,有时候没有,不过一般会要2分钟左右,在手机上进行网络请求,charles就可以正常的抓到对应的请求包了。如果有弹框,选择Yes就可以了。

2.png

三.附加教程

1、电脑客户端没有“request”和"response”设置的解决方案

A317DF8A-9549-4D0C-BF4B-DEEBA770FE79.png

A94802B3-4C1A-4C54-A141-87273881B299.png

2、解决https协议“request”和"response”乱码问题

2031034-037ae2e07c074e10.png 添加如图内容,点击确定,重新请求,乱码解决了:

2031034-856704a20f989ca0.png

3.android应用高版本代理设置

对于android手机,由于在7.0之后,系统增加了安全方面的控制,也就是Net Security Configuration。需要在自己的应用中配置一下xml数据,才可以正常的抓包,否则会报错如下:

You may need to configure your browser or application to trust the Charles Root Certificate. See SSL Proxying in the Help menu.

配置的方式就在谷歌的文档上。

developer.android.google.cn/training/ar…

推荐xml中写成这样,保证在debug版本上支持自己加入的证书:

<?xml version="1.0"encoding="utf-8"?>

<network-security-configxmlns:tools="<http://schemas.android.com/tools>">

    <debug-overrides>

        <trust-anchors>

<!--信任用户安装的证书-->

<certificatessrc="user"/>

        </trust-anchors>

    </debug-overrides>

</network-security-config>
复制代码

参考链接:

链接:https://www.jianshu.com/p/3b4cd6fdd…

链接:https://www.jianshu.com/p/e88a1ccb1…

链接:developer.android.google.cn/training/ar…

分类:
前端
标签: