抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作。也用来检测网络安全。抓包也经常被用来进行数据截取等。对于iOS初学者来说,抓包主要是为了了解网络请求操作,解决没有专人提供网络接口进行练习的问题。可以抓取大量已经上架AppStore的App的网络请求,进行网络阶段的操作练习。
操作原理
关键的操作思想:
1. 构造一个中间人代理,它有能力完成TLS/SSL握手
2. 弄到一个根证书,并用它生成签名认证的代理服务器证书
一. 软件的安装
1. 下载
下载地址: http://www.pc6.com/mac/137987.html
官网下载地址: https://www.charlesproxy.com/download/ 这个地址下载速度很慢
2. 激活
1) 左侧“mac下载”下载应用后,打开Charles,在上方菜单栏的“Help”选择“Register Charles”
2)第一步后,会弹出一个Charles for Mac注册界面.
3)回到解压后的“Charles428”应用文件夹,打开其中的“keygen.jar”(需要安装java才可运行keygen.jar)
4)在运行后的“keygen.jar”上输入“orsoon”然后点击“Generate”生成Charles注册码
5)然后将生成的charles注册码复制到注册界面的对应位置上,再点击“Register”。
6)到这里就可以开始免费使用Charles了。
3. pc端根证书安装
1) 菜单 Help->ssl proxying
依次点击
1. 点击Install Charles Root Certificate, 安装证书
` 双击证书, 设置为收信任
4. 在手机上安装Charles的根证书:
打开help -> Charles Root Certificate on a Mobile Device or Remote Browser,会出现如图
以IOS为例,在Safri上打开Charles的根证书下载网址: chls.pro/ssl 。
顺利的话会出现这样的画面,继续点安装,一路点确定。然后去设置里的描述文件管理如果看到有绿色的勾勾就说明安装成功了。
如果不能下载,检查手机是否正确设置了代理,Charles是否已经打开并配置正确。
接下来,在设置->通用->关于本机->证书信任设置 刚刚安装的证书的开关打开信任就可以抓加密包了。
二. 手机端设置
1.确保iOS设备iphone或ipad与运行Charles的mac电脑处于同一个wifi环境下。
2.查看mac的IP地址,系统偏好设置->网络->wifi->高级->TCP/IP就看到了。
3.打开iOS设备,这里以iphone为例,设置手机网络操作由mac来负责。
PS:不抓包时,把HTTP代理设置为关闭,否则你的手机无法上网。
4.第三步完成后,正常情况下,Mac上会弹出以下提示框,表示Charles软件检测到可供检测的设备。两个按钮选项:Allow 允许 , Deny拒绝。当然我们要选择允许了。
三. 实战
随便点开一个App,抓去它的请求。
2.首先让我们先点下扫帚图标,清空之前记录。
3.在手机上使用下拉刷新操作,观察Charles反应,可以看到网络请求的地址和类型等数据。
四. 处理content乱码的问题
代理成功, 但是请求的Contents会有乱码
1. 确认证书已经设置为收信人
点进去之后,出现如下图:
我这边是已经配好了,若是没配置好的,图中“此证书具有自定信任设置”其实是红色告警,配置,很简单,只要双击图中选中一行,出现如下图:
打开“信任”一栏,在“加密套接字协议层(SSL)”一栏选择始终信任,关闭保存即可。
2.打开Charles,上方菜单栏 —-》Proxy —-》SSL Proxy Settings —-》Add,如图:
Host:填*表示所有网站都抓
Port:443
点击OK,就不再乱码了,亲测。
记录一个大坑
我想要在app上抓包, 但是其他app都没问题, 只有这个app抓包不行, 表现是:
放开ssl proxying *.443就可以. 但问题是, https的请求乱码
加上ssl proxying就直接访问不了了. 提示网络连接异常.
搞了2天, 终于把这个东西整出来.
跳过首页, 不要给首页的域名加ssl proxying. 进入到首页以后的其他域名都是可以访问的.
参考资料:
1. https://www.jianshu.com/p/633ac6221028
2. https://www.jianshu.com/p/7a88617ce80b