使用charles抓包http、https

2,627 阅读3分钟

前言

学会抓包不只是一个程序员的基础技能,测试或打算从事计算机相关的人,都可以尝试掌握该基础技能

本文讲解使用 charles 抓包,当然也可以选使用 Wireshark,这两款是我是用过的感觉还不错的抓包工具(其实就接触了这两款😂)

这里以抓包 ios app为例,实际 android 上也类似,手机抓取步骤配置完毕,mac端自然也能抓取成功了(以网页为例)

抓包 http

抓包 http 比较简单,一共分为三步:

1、获取 pc 端在路由上的 ip 地址

2、手机和电脑连接上一个同一个wifi,在手机上设置wif代理地址,为 charles 所在电脑的 ip 地址

3、打开应用抓包

获取 ip

获取 ip 的方式有很多种,常见的,打开 charles,按照下图所示,help -> Local IP Address即可

image.png image.png

或者直接打开命令行,输入 ifconfig 或者 使用 ifconfig | grep “inet” 筛选出 ip 地址(注意使用路由中的 ip 地址)

image.png

设置代理

将手机和电脑点解同一个wifi,然后设置代理 手动, 设置代理服务器为 pc端ip地址,端口 8888 即可

image.png

charles 出现下面弹窗,请点击 allow

image.png

测试

测试,发现已经能抓到 http 请求内容了

image.png

同时也会发现,https的请求无动于衷,没有被咱们的操作感动到,均为乱码状态,后面介绍下https请求的抓取

image.png

抓包 https

如果想理解 https 的包是如何抓取的,可以先了解下 https 的原理, 我也有两篇文章有介绍这个 https与AFNetworkinghttps与中间人攻击,抓包可以理解为扮演了中间人,看了也许会对你有所帮助

https抓包主要分为4步:

1、像 http 设置一样,处理好 ip、代理设置 问题

2、mac端安装代理相关证书,手机端安装相应描述文件,以便于抓取数据(为了 https 证书校验那一步证书列表校验处理,如果是本地证书校验,那么 charles 则会抓取失败)

3、charles 设置 SSL代理相关内容

4、对 https 接口抓包

mac端安装证书

charles中 选择 help -> SSL Proxying -> Save Charles Root Certificate

image.png

选择后会生成一个证书,直接放到桌面即可,双击加入证书列表

image.png

打开钥匙串,从证书列表中找到他,双击,选择始终信任即可

image.png

安装手机描述文件

charles中 选择 help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Remote Browser

image.png

然后会弹出下面的弹窗,意思就是,设置好第一步的ip代理,然后打开浏览器(safari), 输入地址: chls.pro/ssl,然后跳转下载描述文件即可

image.png

设置好代理后,出现下面弹窗记得 allow

image.png

下载完毕描述文件后,在设置中,点击信任即可

image.png

抓取 https 接口

charles中 选择 help -> SSL Proxying -> Proxying Settings

image.png

SSL Proxying 中, 左侧的 Include 栏中,点击 add,如下所示设置 host*(任意host), port443

image.png

然后就抓取成功了

image.png

抓取mac端网页

和配置手机https的抓包步骤类似,只是不用往手机上安装描述文件了,SSL代理host 配置为 *port443,以抓取掘金网页为例,一步到位

image.png

最后

相信眼尖的童鞋已经看到了,手机上有些 https 的请求并未抓取成功, 了解https原理的童鞋相信能猜到原因,在https中的证书校验规则中就被筛掉了,一些app或者一些接口服务,采用了本地证书校验等方式,这种情况是没有办法伪装破解的,例如:微信、掘金等,都抓取不成功的,我也是找了好些app才能抓取的 😂

最后,快来尝试一下吧