charles抓包了解一下
charles简介
Charles是一款基于java开发的跨平台抓包软件,可在Mac、Linux、Windows下使用,可以抓取电脑和手机上的http、https请求,是前端开发的一个利器。Charles官网地址:https://www.charlesproxy.com,可在里面下载最新的版本。由于这款软件只有30天的免费使用期限,除非你付费。但是如果想免费使用的话也是可以的,只是每次使用不能超过30分钟,且启动会有10秒的延时,谁让不想花钱呢,就忍忍吧。
http抓包
针对http抓包的配置要简单一些。
抓取mac上的http请求数据
1. 将 Charles 设置成系统代理
当打开Charles软件的时候,就默认对系统设置了代理。具体是否设置可以通过点击Charles菜单栏中的Proxy 菜单,找到macOS Proxy ,如果已经勾选就不需再设置,具体如下图所示:
2. 设置支持 http 请求抓取
在 Proxy 菜单栏中,点击Proxy Settings ,打开对话框,可以设置端口号(默认是8888),并选中 Enable transparent Http proxying 选项,如下图所示:
只需设置这两部,就可以抓取电脑端的数据了。现在可以打开一个网页,发送一个请求,看看charles抓取的情况。
抓取手机上的http请求数据
1. 获取电脑IP地址
首先你要知道你电脑的IP地址。我用的是mac电脑,所以就以mac电脑为例,有两种方法:
打开系统偏好设置 -> 网络。在里面可以看到目前电脑的IP地址
或者打开teminal,用命令行的方式,输入ifconfig,找到目前电脑的IP地址
2. 设置手机HTTP代理
首先要确保手机和电脑处于同一个无线网络中。点击“设置->无线局域网”,进去后点击已连接上的wifi,会进入连接详情页面。点击最下面的HTTP代理,选择手动,在服务器栏输入刚才查到的电脑的IP地址,在端口栏输入8888(上面设置好的),如下图所示:
然后就可以在手机端发送请求了,发送请求后会在电脑端弹出一个窗口,具体如下:
点击allow,就可以在charles中看到刚才的请求详情了。
到此有关http的抓包就完成了。但如果访问了以https开头的网址,charles中是无法识别的,会出现一堆unknown的标志,这时候需要针对https的进行一些配置。
https抓包
https的抓包是在http的配置基础上进行的。
1. 电脑端安装证书
点击菜单栏 Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device,会自动打开钥匙串访问窗口,具体如下:
刚开始该证书有个叉号,意思是说此证书是已标记为不受此账户信任,需要输入密码后,选择始终信任后,该证书会变成受此账户信任。具体如下:
2. Charles设置Proxy
点击菜单栏Proxy -> SSL Proxying Settings
在弹出的窗口中勾选Enable SSL Proxying,
点击add,hosts中填写*(抓取所有来源的https请求),port端口填写443(https默认端口)
电脑端的配置就完成了,接下来为了抓取手机端的https请求,需要在手机端也安装一个证书。
3. 安装SSL证书到手机设备
点击菜单栏 Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device,具体如下:
电脑端弹出如下弹窗,告诉你下载证书的地址:
在手机浏览器中输入网址chls.pro/ssl,会跳到证书安装页面,点击安装(需要输入密码)。
安装完成后,重新请求,在charles中就可以看到https请求的详情了。
至此所有的设置都以完毕。接下来就可以拿到接口数据,进行自己的模拟分析等等工作了。
有一点需要注意,不抓包的时候务必要关闭手机设置的HTTP代理,否则断开与电脑的连接后手机会上不去网,大家千万注意!!!