前言
1、工具的选择
抓包方式有多种(Charles、Fiddler、Spy-debugger、Wireshark等),这里只说这一种Charles!
Charles是一个在本地运行的Web代理(HTTP代理/ HTTP监视器)软件。开启Charles后,Web浏览器(或任何其他的互联网应用程序)将配置为通过Charles来访问互联网,而Charles则能够记录并显示你所有的发送和接收的数据。
在Web和互联网的开发项目中,如果你不能看到客户端(比如浏览器)和服务器之间到底有什么数据正在发送和接收,如果没可视化监控手段,那么确定故障原因将是困难和费时的。Charles可以很容易地看到发生了什么,这样你就可以快速诊断并解决问题。
2、抓包测试原理
抓包工具的主要原理就是网络代理,所有的请求和响应都用工具来隔离。工具内部就能模拟限速以及丢包的效果。
相同的网络,Mac的IP=a,手机用a作为代理,端口则是Charles默认的8888。关键环节,Mac使用正常端口访问网络。
3、工具的安装
官网下载地址(我官网下载没经过破解就可用),或者直接下载破解版。下载了DMG文件后即可开始安装,安装时可能会提示需要java支持,如果机器上java版本不合适,请根据提示到苹果网站找到合适的java安装。其实用正版也可以,只不过每次使用时长是30分钟,30分钟抓个包的时间也够用了。这部分都是前辈们总结的以下是我自己总结的。
4. 准备工作
Charles是macOS上的最常用的抓包工具,目前我使用最新版本为4.6.1,今天来总结一下Charles的最新使用方法,支持Http/Https,主要是抓Https包的使用方法。
MAC与iPhone连接操作步骤
1)、 Mac上Charles客户端配置:打开Charles工具,先从菜单入手
安装好Charles后,在菜单栏勾选『Proxy -> macOS Proxy』,macOS系统HTTP/HTTPS代理将会被自动设置为本地代理,默认端口8888。
2)、 抓macOS应用程序包(HTTPS)
在菜单栏选择 『Help -> SSL Proxying -> Install Charles Root Certificate』,会自动导入 Charles Proxy CA 证书并打开 Keychain Access(钥匙串访问),双击新导入的证书弹出证书信息页面,将 Secure Sockets Layer(SSL安全套接字层) 设置为Always Trust(始终信任),关闭页面后弹出密码提示,输入Mac密码更新系统信任设置。
3)、手机端:手机设置代理连到端口上,前提是手机和pc在同一局域网
》 在Mac上先打开Charles,确保iOS设备和Mac处于同一局域网内(可使用Mac创建热点分享给iOS设备或者连接wifi)。
》 设置iOS HTTP代理,打开iOS设备对应WIFI设置,添加代理IP地址(Mac的局域网地址)和端口号(8888)。
3)、Mac局域网地址可以在Charles中从菜单栏『Help -> Local IP Address』获取。
在iOS设备上访问数据链接,Charles 弹出 Access Control 确认对话框,选择Allow,可以开始抓取HTTP包。
4)、下面设置抓取HTTPS包
在菜单栏选择 『Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or a Remote Browser』,弹出提示框。
根据上述提示,在iOS设备上使用Safari浏览器访问 http://chls.pro/ssl,Safari浏览器会自动下载证书并提示安装,根据提示一步一步安装好,证书会被添加到『设置 -> 通用 -> 描述文件』中。
进入『设置 -> 通用 -> 关于本机 -> 证书信任设置』,对上一步安装的Charles证书启用完全信任。
在iOS设备上访问HTTPS数据链接,可以开始抓取HTTPS包。抓包域名端口设置和macOS应用程序相同。
到此为止是数据请求的抓包过程........
5、MAC上使用Safari浏览器调试WebView
在macOS上打开Safari设置
Safari – 偏好设置 – 高级 – 勾选“在菜单栏中显示开发”
在iOS设置
设置 – Safari – 高级 – 打开Web检查器
将网页的地址输入到手机Safari上打开,注意:电脑和手机要用数据线连接!!!
下图就是调试界面
6、Proxy简要描述
charles有强大的代理功能,总的来看大概可以分为5大块:
一、常用功能开关区
二、常用功能设置区
三、反向代理和端口转发区域
四、charles的代理身份配置区域
五、常用的高级设置区
【stop/start recording和recording settings】
是常用的功能,这里需要注意后面的session1代表当前你将要操作的会话窗口,就是切换是否进行捕获记录。