Android手机配置charles进行抓包

来源:稀土掘金

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

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

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

  二.charles配置抓https包

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

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

  2.1 电脑安装charles的证书

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

  2.2 手机安装charles的证书

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

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

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

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

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

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

  2.3 手机配置charles代理

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

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

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

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

  三.附加教程

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

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

  添加如图内容,点击确定,重新请求,乱码解决了:

  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.

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

  < xml version="1.0"encoding="utf-8" >  <network-security-configxmlns:tools="<;">  <debug-overrides>  <trust-anchors>  <!--信任用户安装的证书-->  <certificatessrc="user"/>  </trust-anchors>  </debug-overrides>  </network-security-config>

顾翔老师的新书《全栈软件测试工程师宝典》,

京东网站购书地址: