背景
作为一个前端开发程序猿,工作中难免会遇到需要抓包的情况,下面就来整理学习一下
将Charles设置成系统代理
选择“Proxy”-"macOS Proxy",将Charles设置成系统代理,之后就能看到有源源不断的请求出现在Charles界面上
Charles提供了Structure和Sequence两种视图,可以来回切换
抓取移动端的包
抓取移动端的包需要将移动端的请求代理到Charles上,需要将移动端和PC连接同一Wifi
首先需要将Charles的代理功能代开,在 Charles 的菜单栏上选择 “Proxy”–>“Proxy Settings”,填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的设置。
查看PC的IP地址,在移动端的设置中,将连接的WiFi代理到PC的IP和端口上,端口为Charles设置的端口。以iPhone为例,在“ 设置 ”–>“ 无线局域网 ” 中,可以看到当前连接的 wifi 名,通过点击右边的详情键,可以看到当前连接上的 wifi 的详细信息,找到“ HTTP 代理 ”,设置为手动,然后填上 Charles 运行所在PC的 IP,以及端口号 8888。
设置好后,在移动端打开任意会发送网络请求的程序,在PC端会出现Charles弹窗,点击allow即可抓取移动端的包
抓取HTTPS包
Charles默认只能抓取Http的包,抓取Https的包需要下载并安装证书,如果是抓取移动端的Https包,也需要在移动端安装证书,否则抓取的包看不到内容,都是乱码
选择 “Help” –> “SSL Proxying” –> “Install Charles Root Certificate”,然后输入系统的帐号密码,即可在 KeyChain 看到添加好的证书。
Charles默认不会开启SSL Proxying,需要右键手动“Enable SSL Proxying”,之后可以在“Proxy” –> “SSL Proxying Settings”中看到开启https抓包的域名列表
注意,即使安装了证书,Charles默认也不会窃取Https包的信息,需要在右击请求,选择“Enable SSL Proxying”,便能截获这个Host下的Https请求的内容了
抓取移动端的HTTPS包
需要给移动端也安装Charles证书,选择 “Help” –> “SSL Proxying” –> “Install Charles Root Certificate on a Mobile Device or Remote Browser”,然后可以看到 Charles 弹出一个的简单的安装教程。根据上面的提示,在移动端用浏览器打开chls.pro/ssl 网址,下载并安装证书,就可以抓取到移动端的HTTPS包了。
https证书过期
https证书过期后开启https代理抓到的https包同样是乱码,并且如果是抓取移动端的https,在ios上会导致https请求失败,此时需要先删除证书再重新安装,删除完证书之后需要先Reset证书,才能顺利安装。