一、iOS Charles 配置后显示网络不可用
在 iOS 应用程序测试阶段,Charles 是一个非常有用的工具。它能够监控应用程序与服务器之间的通信,方便地捕捉和查看网络通信流。但是,有时候我们可能在配置好 iOS Charles 后发现网络不可用。接下来,我们来看几个可能出现在这种情况下的原因和解决方法。
1. 检查代理设置
通过在“设置” → “无线局域网” → “Wi-Fi 网络名称” → “配置代理” → “手动模式”的路径下检查代理设置,确保代理地址与 iOS Charles 上设置的地址一致,端口号一致,并且“代理与主机名”需要选中。
2. 安装证书
要想使用 iOS Charles 捕获 HTTPS 协议的网络数据包,首先需要在 iPhone 上安装 Charles SSL 证书。如果没有正确安装 Charles 证书,就无法成功捕获 HTTPS 网络数据包。我们可以通过以下操作安装证书:
打开 Charles,点击“Help” → “SSL Proxying” → “Install Charles Root Certificate on a Mobile Device or Remote Browser”,将证书发送到邮件或者 AirDrop 到手机,并安装。
3. 查看防火墙规则
iOS Charles 与 Mac 电脑连接后,需要一个支持网络共享的内置防火墙规则才可以正常进行沟通。如果发现网络不可用,可以在 Mac 的“系统偏好设置” → “安全性与隐私” → “防火墙”中查看应用程序的防火墙规则是否允许 iOS Charles 进行网络访问。
二、HTTP 代理与 HTTPS 代理区别
HTTP 代理只处理 HTTP 请求,HTTPS 代理则具有某种能力使得它们可以管理 HTTPS 请求。当 iOS Charles 作为一个 HTTP 代理工具时,可以捕获 HTTP 请求包。但是,当我们想要捕获 HTTPS 请求时,就需要将 iOS Charles 转变为 HTTPS 代理工具,这就需要配置 HTTPS 代理。
HTTP 代理示例代码:
// 配置 HTTP 代理
[NSURLProtocol registerClass:[PMURLProtocol class]];
// 或
[NSURLProtocol wk_registerScheme:@"http"];
[NSURLProtocol wk_registerScheme:@"https"];
HTTPS 代理示例代码:
// 配置 HTTPS 代理
[NSURLProtocol registerClass:[PMHTTPProtocol class]];
三、HTTPS 捕获问题
当 HTTPS 请求捕获成功时,证书应该安装在“已信任的根证书颁发机构”中。有时候在 iOS 设备上安装证书后,仍然无法捕获 HTTPS 请求。
1. 查看证书是否已经安装
我们可以在“设置” → “通用” → “关于本机” → “证书信任设置”中查看证书是否已安装。
2. 重新安装 SSL 证书
如果已经安装证书,但是没有成功捕获 HTTPS 请求,则可以尝试重新安装证书。具体步骤参见以上步骤“安装证书”。
四、iOS Charles 其他功能的使用
iOS Charles 不仅可以是一个应用程序网络调试和分析利器,还可以用于替换或篡改 HTTP 或 HTTPS 请求和响应。以下是 iOS Charles 的一些其他功能。
1. 设置断点并编辑请求
通过设置断点,可以暂停请求发送,并编辑请求的头部、内容和参数,进行请求的测试和修改。点击选中请求,在“Edit Request”中可以进行编辑。
2. 过滤和搜索功能
使用过滤和搜索功能可以在复杂的网络流量中找到你所需要的信息。可以使用快捷键进行过滤和搜索,也可以通过菜单栏中的“Filter”和“Search”进行操作。
3. 其他设置
在“Proxy” → “Proxy Settings”中可以更改 iOS Charles 的主机、端口、版本等设置,选择是否显示耗时、gzip 压缩等信息,更改抓包数据的储存目录和格式等设置。