使用Charles轻松抓取HTTPS和移动端接口

18 阅读2分钟

什么是Charles?

Charles是一款网络调试工具,帮助开发者捕获和分析网络请求,包括HTTPS流量。下面我们将一步步介绍如何使用Charles抓取移动端的HTTPS接口。

安装Charles

  1. 下载安装:从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设备:直接安装即可。

步骤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接口请求,并分析网络流量。