什么是Charles?
Charles是一款网络调试工具,帮助开发者捕获和分析网络请求,包括HTTPS流量。下面我们将一步步介绍如何使用Charles抓取移动端的HTTPS接口。
安装Charles
- 下载安装:从Charles官网下载并安装Charles。
配置Charles抓取HTTPS请求
步骤1:安装Charles证书(PC端)
- 打开Charles,点击菜单栏 Help -> SSL Proxying -> Install Charles Root Certificate,安装证书到信任位置。
步骤2:配置SSL代理
- 在Charles中,点击菜单栏 Proxy -> SSL Proxying Settings,添加规则,Host填
*
,端口填443
,以抓取所有HTTPS请求。
配置移动端抓包
步骤1:手机和电脑连接同一网络
- 确保手机和电脑连接到同一个WiFi网络。
步骤2:设置手机代理
- 在手机的WiFi设置中,长按当前连接的网络,选择 修改网络 -> 显示高级选项,设置代理为手动:
- 服务器主机名:填入电脑的IP地址。
- 端口:填写Charles的代理端口(默认为8888)。
步骤3:安装Charles证书(手机端)
- 在手机浏览器中访问
http://chls.pro/ssl
,下载并安装证书。- Android设备:可能需要将
.pem
文件重命名为.crt
或.cer
才能安装。 - iOS设备:直接安装即可。
- Android设备:可能需要将
步骤4:信任证书(iOS设备)
- 在iOS设备上,安装证书后,进入 设置 -> 通用 -> 关于本机 -> 证书信任设置,勾选刚刚安装的证书以信任它。
步骤5:允许设备连接
- 在Charles中,当手机连接时,会弹出提示,选择 允许 以允许设备连接。
步骤6:开始抓包
- 现在可以开始抓包了,打开移动应用,Charles将捕获并显示所有HTTPS请求。
常见问题解决
- 证书过期:如果HTTPS包抓不到,检查证书是否过期,需要重置并重新安装证书。
- 部分应用不支持抓包:如果某些应用不支持抓包,可能需要在应用的网络安全配置中允许信任用户级证书。
示例代码(Java)- 使用OkHttp发送HTTPS请求
下面是一个使用OkHttp发送HTTPS请求的例子,展示如何在移动端与服务器进行通信:
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class Main {
public static void main(String[] args) throws Exception {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://example.com")
.build();
try (Response response = client.newCall(request).execute()) {
System.out.println(response.body().string());
}
}
}
通过这些步骤,你可以成功地使用Charles抓取移动端的HTTPS接口请求,并分析网络流量。