Skip to content

抓包基础

抓包是指通过网络代理工具(如 Charles)截获网络请求和响应数据的过程,特别是用于分析 HTTP 和 HTTPS 协议的通信。了解 HTTP/HTTPS 协议基础以及如何抓取请求和响应是使用 Charles 的关键。

HTTP/HTTPS 协议基础

  • HTTP(超文本传输协议):是一种无状态、基于请求-响应模型的通信协议,常用于浏览器与服务器之间的通信。HTTP 主要使用明文传输数据,端口通常为 80。

  • HTTPS(超文本传输安全协议):是 HTTP 的安全版本,数据通过 SSL/TLS 加密传输,确保通信的安全性和隐私性。HTTPS 通常使用端口 443。

    HTTP/HTTPS 请求的组成部分:

    • URL:统一资源定位符,用于标识网络上的资源。
    • 方法(Method):表示请求的动作类型,例如:
      • GET:请求从服务器获取数据。
      • POST:向服务器提交数据。
      • PUT:更新资源。
      • DELETE:删除资源。
    • 请求头(Request Headers):包含客户端提供的元数据信息,例如:
      • User-Agent:客户端信息(浏览器、操作系统等)。
      • Content-Type:请求内容的类型(如 application/jsontext/html 等)。
      • Authorization:用于身份验证的 token 或认证信息。
    • 请求体(Request Body):主要用于 POSTPUT 方法,包含提交给服务器的数据。

    HTTP/HTTPS 响应的组成部分:

    • 状态码(Status Code):服务器返回的请求结果状态,例如:
      • 200 OK:请求成功。
      • 404 Not Found:请求的资源未找到。
      • 500 Internal Server Error:服务器内部错误。
    • 响应头(Response Headers):包含服务器返回的元数据,如:
      • Content-Type:响应内容类型(如 application/json)。
      • Set-Cookie:设置客户端的 Cookie。
    • 响应体(Response Body):服务器返回的数据内容,如 HTML 页面、JSON 数据等。

抓取 HTTP 请求和响应

步骤:

  1. 启动 Charles:确保 Charles 已正常运行并开始抓包。
  2. 设置代理:配置系统或移动设备的网络代理,使流量通过 Charles。
  3. 抓包:
    • 当设备发出 HTTP 请求时,Charles 会自动拦截并记录这些请求。
    • 在 Charles 界面中,所有截获的请求会显示在左侧的请求列表中。每个请求会显示请求的域名、路径、方法和状态码。
  4. 查看请求:点击某个请求,Charles 会在右侧详细展示该请求的具体内容,分为以下几个部分:
    • Request:展示请求的 URL、方法、请求头和请求体。
    • Response:展示服务器返回的状态码、响应头和响应体。
    • Cookies:查看请求或响应中的 Cookie。
    • Time:显示请求耗时。
    • Hex/Raw:以十六进制或原始数据格式查看请求与响应的细节。

抓取 HTTPS 流量

由于 HTTPS 使用了 SSL/TLS 加密协议,因此直接抓取 HTTPS 流量时,数据是加密的,无法直接查看到请求和响应的内容。如下图中显示 unknown

24101103.png

为了解决这个问题,需要通过 Charles 的 SSL 解密功能来抓取和解密 HTTPS 请求。

安装 Charles 的 SSL 证书

为了能够抓取和解密 HTTPS 流量,首先需要在系统或设备上安装 Charles 的 SSL 证书:

  1. 在电脑上安装 SSL 证书:

    • 启动 Charles,选择菜单栏中的 Help > SSL Proxying > Install Charles Root Certificate
    • 系统会提示安装证书,按提示操作完成安装。
    • Mac:证书安装后,打开钥匙串访问,找到 Charles 证书,右键点击选择显示简介,并将其设置为始终信任24101104.png
    • Windows:在受信任的根证书颁发机构下安装证书。
  2. 在移动设备上安装 SSL 证书:

    • 确保移动设备已经正确设置了代理,并与 Charles 运行的电脑连接在同一 Wi-Fi 网络。
    • 在移动设备浏览器中访问 http://charlesproxy.com/getssl,下载并安装证书。
    • iOS:安装后,进入设置 > 通用 > 关于本机 > 证书信任设置,手动信任 Charles 证书。
    • Android:证书安装后,通过设置 > 安全 > 从设备存储安装选项,找到下载的证书并安装。

设置允许解密的域名

Charles 允许用户指定哪些 HTTPS 域名需要解密抓取。

通过以下步骤设置允许解密的域名:

  1. 启动 Charles,选择菜单栏中的 Proxy > SSL Proxying Settings
  2. 在弹出的窗口中,点击 Add,输入想要解密的域名(例如 *.example.com 可以解密所有 example.com 下的请求)。
  3. 保存设置。

如下图所示,须勾选 Enable SSL Proxying,并且允许所有域名及端口(均设为 *):

25030702.png

实时查看和分析请求与响应

  1. 抓包实时查看:在配置好代理并安装 SSL 证书后,所有网络请求和响应会被实时显示在 Charles 的请求列表中。
  2. 过滤请求:通过 Charles 的过滤功能,可以只查看感兴趣的请求,忽略无关的流量。点击请求列表上方的搜索框,可以根据 URL、方法、状态码等进行过滤。
  3. 查看请求详情:
    • 请求详情:点击某个请求,在右侧面板可以查看完整的请求 URL、请求方法、请求头和请求体。
    • 响应详情:在 Response 选项卡下,可以查看服务器返回的响应头、响应体和状态码。
  4. 分析请求与响应时间:在 Time 选项卡下,可以查看每个请求的发起时间、响应时间以及整体的网络延迟。这对于网络性能调优非常有帮助。
编程洪同学服务平台是一个广泛收集编程相关内容和资源,旨在满足编程爱好者和专业开发人员的需求的网站。无论您是初学者还是经验丰富的开发者,都可以在这里找到有用的信息和资料,我们将助您提升编程技能和知识。
专业开发
高端定制
售后无忧
站内资源均为本站制作或收集于互联网等平台,如有侵权,请第一时间联系本站,敬请谅解!本站资源仅限于学习与参考,严禁用于各种非法活动,否则后果自行负责,本站概不承担!