admin管理员组

文章数量:1122850

文章目录

  • 背景
  • 操作原理
  • windows 安装Charles
  • Charles配置
    • 第一步:配置HTTP代理,这步与抓取HTTP请求是一样
    • 第二步:配置SSL代理
    • 第三步 :为手机配置代理
      • iPhone 代理配置
      • Android 代理配置
    • 第四步:安装根证书
      • iPhone 安装charles证书
      • Android 安装charles证书
      • windows 安装charles证书
  • 抓包
    • 正常抓包
    • 抓包乱码

背景

后端小伙伴接口文档没写,问接口时,回复说web已经实现了,抓包看接口和参数。虚心的应了句,试试看。结果也不是如此,支付下单的后端接口到能直接调用微信支付的仅在微信内打开h5才能自然支付,此时抓包不再是f12的事情了。需要使用代理,本文主要讲windows 上Charles抓手机上的https包,包括Android 和 ios。

操作原理

关键的操作思想:

  1. 构造一个中间人代理,它有能力完成TLS/SSL握手
  2. 弄到一个根证书,并用它生成签名认证的代理服务器证书

Charles就是一个理想的中间人,它支持SSL握手,可以自动根据根证书生成一个签名的服务器证书,并且它的官网为我们提供了一个根证书。
我们要做的就是在客户端安装好这个根证书,然后让我们的操作系统信任它。对App来说,需要设法在IOS或Android上装上这个官网提供的根证书。
完成上述步骤后,App再指定Charles(电脑)为它的代理服务器,这时,App(或手机浏览器)请求的服务器证书就是Charles自动生成的代理服务器证书。如果Charles的根证书已被信任,这个自动生成的代理服务器证书是有效的,使用它App和Charles的TLS握手可以顺利完成。

windows 安装Charles

官网下载或其他网站下载都可以,官网现状是30天免费。
下载完成后双击运行,一直下一步直到安装结束。

Charles配置

第一步:配置HTTP代理,这步与抓取HTTP请求是一样


选择在8888端口上监听,然后确定。勾选SOCKS proxy,还能截获到浏览器的http访问请求。
说明:这里的8888端口作用是监听端口,手机设置代理时就要填写这个端口。

第二步:配置SSL代理

在charles的 Proxy选项选择SSL Proxy Settings

接着在弹出的对话框中点击add,添加需要监视的域名。域名支持 *号通配符,如:抓取所有的https请求,可以填写 *:443
如果想要抓取qq的域名,可以填写 *.qq
鄙人就填了*:443,外加一个18043端口

第三步 :为手机配置代理

在手机无线中配置手动代理,输入安装Charles的电脑的网络地址,端口填8888(上文中提到过)。

iPhone 代理配置

我的是iphone12,系统14.7

  1. 设置 - 无线局域网 找到当前网络,点击信息

  2. 接着拉到底

  3. 打开配置代理,选择手动,填写电脑ip(图中为我的IP,请修改为your电脑ip),监听端口(8888)进行配置,然后记得存储(保存)

Android 代理配置

我的华为 nova3e Android 9

  1. 设置 - 无线与网络 - WLAN 找到当前连接的网络并长按,选择修改网络
  2. 勾选 显示高级设置 ,然后显示代理后选择手动
  3. 设置代理服务器后记得保存

第四步:安装根证书

这里安装根证书是指Charles的根证书,包括电脑和手机都需要安装。手机安装证书时,必须执行到了上面第三步,手机已经设置好了代理(此时不能访问百度或其他网站,不要慌)。

iPhone 安装charles证书

  1. 在Safri上打开Charles的根证书下载网址: chls.pro/ssl 。

  2. 下载完之后会提示 到设置app中查看描述文件(证书),点击关闭

  3. 设置 - 通用 中可以找到 "描述文件"选项,并打开

  4. 找到刚才下载的证书,点击安装,安装过程中需要输入屏幕密码,没有需要设置屏幕密码

  5. 此时会有提示,只管继续安装

    安装成功后如下:

  6. 去设置信任(非常关键)
    设置 - 通用 - 关于本机, 拉到底后看到 证书信任设置 点开


    开启证书信任:

Android 安装charles证书

  1. 在自带浏览器上打开Charles的根证书下载网址: chls.pro/ssl 。前提也是Windows charles 先配置好代理(完成第二第三步),手机网络设置好代理服务器。

    下载后无法打开无法识别(不要慌)

  2. 设置 - 安全和隐私 - 更多安全设置 - 加密和凭据

    接着选择 ”从存储设备安装“

    再选择下载的证书文件

  3. 安装证书,需要输入屏幕密码或设置屏幕密码(没有的话),弹框中选择WLAN

  4. 安装成功后可以在 ”用户凭据“中查看


    至此Android 证书安装完成,可以在 受信任的凭据 - 用户 中看到刚才的证书是受信任的

windows 安装charles证书

  1. charles 菜单 help - SSL Proxying - Install Charles Root Certificate

  2. 弹出如下提示框,选择安装证书

    安装过程中不要选择个人用户,要选本地计算机(足够的权限)

  3. 选择及那个所有证书放入指定的受信任的存储区


  4. 安装完成后可以查看证书的详细信息和路径

抓包

手机代理配置好,证书配置好,手机开始访问期望的接口或网站

正常抓包

能看到明文的参数和响应数据

抓包乱码

  1. SSL Proxying not enabled for this host: enable in Proxy Settings, SSL locations

    点击后面的Notes查看原因:

    这样提示是因为没有开启ssl(https) 的代理,这样去开启


    重新开始抓包即可(可不重启charles),需要手机刷新页面
  2. 加密数据
    这种情况下是接口开发人员把数据加密传输的,要解密已经不是本文要讲的内容。

本文标签: 图文详细HTTPSCharlesWindows