Wireshark抓包:HTTP与HTTPS请求分析大揭秘
一、Wireshark 是什么

Wireshark 是一款免费且开源的网络封包分析软件 ,被誉为网络协议分析领域的 “瑞士军刀”,在网络分析领域占据着举足轻重的地位。它最初由 Gerald Combs 开发,前称 Ethereal,后因商标问题在 2006 年 5 月更名为 Wireshark。
其主要功能是截取网络封包,并尽可能详细地显示网络封包资料。它就像是一位专业的网络 “侦探”,能帮助我们深入了解网络中数据传输的细节。无论是网络故障排查、网络安全分析,还是软件和通信协议开发,Wireshark 都能大显身手。例如,网络管理员可以用它来检测网络问题,定位网络故障点;网络安全工程师能借助它检查信息安全相关问题,发现潜在的安全威胁;开发者可以利用它为新的通讯协定除错,确保协议的正确性和稳定性;普通使用者还能通过它学习网络协定的相关知识,提升对网络的理解。而且,Wireshark 支持多种操作系统,包括 Windows、MacOS、Linux 等,具有广泛的适用性,这也使得它成为了网络分析领域中最受欢迎的工具之一。
二、HTTP 与 HTTPS 基础回顾
在深入学习使用 Wireshark 抓包分析 HTTP/HTTPS 请求之前,我们先来回顾一下 HTTP 与 HTTPS 的基础知识。
(一)HTTP 协议解析
HTTP,即超文本传输协议(Hypertext Transfer Protocol) ,是一种用于在客户端和服务器之间传输超文本数据的应用层协议,也是互联网应用的核心支持技术。它基于 TCP/IP 协议,采用请求 - 响应模式,使得客户端(如 Web 浏览器)能够与服务器进行通信,获取各种资源,如网页、图片、视频等。例如,当我们在浏览器中输入一个网址并回车后,浏览器会向对应的服务器发送 HTTP 请求,服务器收到请求后进行处理,并返回相应的 HTTP 响应,其中包含我们请求的网页内容。
HTTP 是无状态协议,这意味着服务器不会记住之前请求的状态,每个请求和响应操作都是独立的 。这一特性虽然简化了服务器的设计,但在实际应用中,为了实现跨请求的数据传递,我们通常会借助 Cookie、Session 或其他机制来保存请求的状态信息。另外,HTTP 协议传输的数据是明文的,这就导致数据在传输过程中容易被窃取或篡改,存在一定的安全风险。比如,在使用 HTTP 协议进行网络支付时,支付信息可能会被黑客截获,造成用户财产损失。
HTTP 协议定义了多种请求方法,每种方法对应不同的操作。常见的 HTTP 请求方法有:
-
GET:用于从服务器获取资源,通常用于查询数据。例如,在浏览器中访问一个网页,就是使用 GET 请求获取网页的内容。GET 请求的参数会附加在 URL 后面,以 “?” 分隔,多个参数之间用 “&” 连接 ,如
https://example.com/search?keyword=wireshark&page=1。GET 请求是幂等的,即多次执行相同的 GET 请求应该返回相同的结果。 -
POST:用于向服务器提交数据,通常用于创建资源或处理一些操作 ,如提交表单、上传文件等。POST 请求的数据会放在请求体中,不会显示在 URL 中,因此适合传输敏感信息。与 GET 请求不同,POST 请求不是幂等的,多次执行相同的 POST 请求可能会产生不同的结果,比如多次提交订单可能会导致多次下单。
-
PUT:用于更新服务器上已存在的资源,通常用于替换资源。PUT 请求也是幂等的,多次执行相同的 PUT 请求应该具有相同的效果 。例如,使用 PUT 请求更新用户的个人信息,将新的信息发送到服务器指定的资源路径,服务器会用新的数据替换原来的数据。
-
DELETE:用于删除服务器上指定的资源 。同样具有幂等性,多次执行相同的 DELETE 请求应该具有相同的效果,即资源被删除后,再次执行 DELETE 请求不会产生额外的影响。
(二)HTTPS 协议解析
HTTPS,即超文本传输安全协议(Hypertext Transfer Protocol Secure) ,是 HTTP 的安全版本,它通过在 HTTP 协议的基础上加入 SSL/TLS 加密层,实现了数据的加密传输和身份认证,有效解决了 HTTP 协议的安全问题,被广泛用于万维网上安全敏感的通讯,如交易支付、登录认证等场景。
HTTPS 的安全特性主要基于 SSL/TLS 加密技术 。SSL(Secure Sockets Layer)是网景公司在 1994 年开发的一种安全协议,后来演变成了 TLS(Transport Layer Security) 。TLS 协议使用对称加密和非对称加密相结合的方式,对数据进行加密传输,同时通过数字证书验证服务器的身份,确保通信双方的真实性,防止中间人攻击。例如,在进行网上银行转账时,HTTPS 协议可以保证用户的账号、密码以及转账金额等敏感信息在传输过程中不被窃取或篡改,保障用户的资金安全。
HTTPS 建立连接的过程相对复杂,主要包括以下几个步骤:
-
客户端发起请求:客户端(如浏览器)向服务器发送一个 Client Hello 消息,其中包含客户端支持的 TLS 版本、加密算法列表以及一个随机数(Client Random) 。
-
服务器响应:服务器收到 Client Hello 消息后,选择双方都支持的 TLS 版本和加密算法,并向客户端发送 Server Hello 消息,其中包含服务器选择的 TLS 版本、加密算法、另一个随机数(Server Random)以及服务器的数字证书 。
-
客户端验证证书:客户端收到服务器的数字证书后,会验证证书的有效性,包括证书是否由受信任的证书颁发机构(CA)签发、证书是否过期、证书中的域名是否与请求的域名一致等 。如果证书验证通过,客户端会从证书中提取出服务器的公钥。
-
密钥协商:客户端生成一个随机数(Pre - Master Secret),并用服务器的公钥对其进行加密,然后将加密后的 Pre - Master Secret 发送给服务器 。服务器使用自己的私钥解密得到 Pre - Master Secret。之后,客户端和服务器根据 Client Random、Server Random 和 Pre - Master Secret,通过一定的算法生成相同的会话密钥(Session Key),用于后续的数据加密传输。
-
数据传输:双方使用生成的会话密钥对数据进行加密传输,确保数据的机密性和完整性 。
(三)两者对比
HTTP 和 HTTPS 在多个方面存在差异,具体对比如下:
-
加密方式:HTTP 是明文传输,数据在传输过程中不进行加密,容易被窃取和篡改;而 HTTPS 通过 SSL/TLS 加密层对数据进行加密传输,保证了数据的机密性和完整性 。
-
端口号:HTTP 默认使用 80 端口 ;HTTPS 默认使用 443 端口 。
-
连接过程:HTTP 的连接过程相对简单,客户端与服务器直接建立 TCP 连接后即可进行数据传输;HTTPS 的连接过程较为复杂,需要进行 SSL/TLS 握手,完成加密算法协商、证书验证和密钥交换等步骤后,才进行数据传输 。
-
安全性:由于 HTTP 明文传输的特性,其安全性较低,容易受到中间人攻击、数据窃听和篡改等威胁;HTTPS 通过加密和身份认证机制,大大提高了通信的安全性,能够有效防止数据泄露和篡改,确保通信双方的身份真实性 。
总体来说,HTTPS 在安全性方面具有明显的优势,随着互联网安全意识的提高,越来越多的网站和应用都开始采用 HTTPS 协议来保障用户数据的安全。但 HTTPS 也并非完美无缺,由于加密和解密过程需要消耗一定的计算资源和时间,可能会导致网站的访问速度略有下降,并且部署 HTTPS 需要申请和配置数字证书,增加了一定的成本和管理复杂度。
三、Wireshark 抓包前期准备
(一)安装 Wireshark
Wireshark 支持在 Windows、MacOS、Linux 等多种操作系统上安装 ,以下为你详细介绍不同系统下的安装步骤及注意事项。
Windows 系统:
-
下载安装包:访问 Wireshark 官方网站(https://www.wireshark.org/download.html ),在下载页面找到 “Windows” 板块,根据你的系统是 64 位还是 32 位,选择对应的安装程序,推荐下载 64 位版本 “Windows x64 Installer” 。下载时一定要从官网获取,避免从不明来源下载带来的安全风险,如包含恶意软件、病毒等,导致系统受损。
-
运行安装向导:下载完成后,找到安装文件(通常命名为 Wireshark - win64 - x.x.x.exe,x.x.x 为版本号),双击运行。在弹出的用户账户控制(UAC)提示中,点击 “是” 允许程序对计算机进行更改 。
-
安装配置:
-
欢迎界面:在安装向导的欢迎界面,点击 “Next” 进入下一步。
-
许可协议:仔细阅读许可协议内容(虽然通常很长,但建议至少浏览关键部分),若同意协议条款,勾选 “I Agree”,然后点击 “Next” 。
-
组件选择:在组件选择页面,保持默认勾选的组件即可,这些组件包含了 Wireshark 运行所需的基本功能和工具。但请务必确保 “NPcap” 组件被选中,NPcap 是 Wireshark 进行网络数据包捕获的核心驱动程序 ,若未安装 NPcap 或安装失败,Wireshark 将无法正常捕获网络流量。如果你的磁盘空间有限,可取消勾选 “Install Wireshark User's Guide”,以节省磁盘空间,该选项是安装 Wireshark 用户指南,后续也可通过官网在线查阅。
-
安装位置选择:默认情况下,Wireshark 会安装到 “C:\Program Files\Wireshark” 路径 ,你也可以点击 “Browse” 按钮选择其他安装目录,然后点击 “Next”。
-
附加任务:在附加任务页面,建议保持默认选项,如创建桌面图标,方便快速启动 Wireshark;关联文件扩展名,使 Wireshark 能直接打开相关格式的捕获文件;安装 USBPcap(用于捕获 USB 流量,若不需要捕获 USB 流量,可取消勾选) 。点击 “Next”,然后点击 “Install” 开始安装。
-
-
安装 NPcap:在 Wireshark 安装过程中,会自动启动 NPcap 安装程序。在 NPcap 安装向导中,点击 “I Agree” 接受许可协议 。建议使用默认设置,勾选 “Install Npcap in WinPcap API - compatible Mode”(以 WinPcap API 兼容模式安装 NPcap,确保与一些依赖 WinPcap 的旧应用程序兼容)和 “Install Npcap driver”(安装 NPcap 驱动) ,然后点击 “Install” 完成 NPcap 安装。NPcap 安装完成后,点击 “Close” 返回 Wireshark 安装。
-
完成安装:等待安装程序完成所有文件的复制和配置。安装完成后,勾选 “Run Wireshark” 选项(如果你想立即打开 Wireshark),然后点击 “Finish” 完成整个安装过程 。首次运行 Wireshark 时,可能需要以管理员身份运行,你可以在开始菜单中找到 Wireshark 图标,右键选择 “以管理员身份运行”。若启动后看不到网络接口,很可能是 NPcap 没安装好,此时可前往控制面板卸载 NPcap 后重新安装。
MacOS 系统:
-
下载安装包:访问 Wireshark 官方网站(https://www.wireshark.org/download.html ),在下载页面找到 “MacOS” 板块。根据你的 Mac 芯片类型选择对应的安装包,Intel 芯片 Mac 选择 “macOS Intel 64 - bit”,Apple Silicon 芯片 Mac 选择 “macOS Arm 64 - bit” ,然后点击下载对应的.dmg 文件。
-
安装应用程序:下载完成后,双击.dmg 文件打开。在弹出的窗口中,将 Wireshark 图标拖动到 “Applications” 文件夹中 ,等待复制完成,这就完成了 Wireshark 的安装。
-
首次运行设置:打开 “Applications” 文件夹,找到 Wireshark 图标并双击启动。由于 Wireshark 不是从 App Store 下载的应用程序,首次运行时,系统可能会弹出 “无法打开,因为它来自身份不明的开发者” 的警告 。此时,右键点击 Wireshark 图标,选择 “打开”,在弹出的对话框中再次点击 “打开”,系统可能会要求输入管理员密码,输入正确密码授权即可。另外,为确保 Wireshark 能正常访问网络,还需去 “系统偏好设置 > 安全与隐私 > 防火墙”,确保 Wireshark 被允许访问网络 。在 MacOS 上抓包可能还需要额外配置,比如安装 chmodBPF 组件,具体步骤可参考官方文档(https://www.wireshark.org/docs/ )。
Linux 系统(以 Ubuntu 为例):
-
添加官方 PPA:打开终端,输入以下命令添加 Wireshark 官方的稳定版本源,确保获取最新版本的 Wireshark:
sudo add - apt - repository ppa:wireshark - dev/stable
-
更新并安装:添加源后,更新软件包列表,然后安装 Wireshark:
sudo apt update sudo apt install wireshark
在安装过程中,系统会询问是否允许非 root 用户捕获数据包,建议选择 “Yes” ,这样普通用户也可以使用 Wireshark 进行抓包,方便日常使用。 3. 启动程序:安装完成后,在应用菜单中搜索 “Wireshark”,点击打开,或者在终端输入 “wireshark” 直接运行 。如果使用的是 Fedora 或 CentOS 等其他 Linux 发行版,安装命令有所不同,Fedora 使用 “sudo dnf install wireshark” ,CentOS 使用 “sudo yum install wireshark” ,其他步骤类似。
(二)环境配置
在使用 Wireshark 抓包前,还需要进行一些基础的环境配置,主要包括网卡选择和权限设置。
网卡选择: Wireshark 可以捕获多个网络接口的流量,在开始抓包前,需要选择正确的网卡。打开 Wireshark 后,点击菜单栏中的 “Capture”,再选择 “Interfaces”(快捷键 Ctrl + I) ,会弹出网络接口列表。在列表中,每个接口旁边会有一个活动图表,显示当前的网络活动情况,有流量波动的即为活跃接口 。例如,如果你的计算机通过 Wi - Fi 连接网络,通常选择 “Wi - Fi” 对应的接口,如 “WLAN” 或 “en0”(在 MacOS 和 Linux 系统中常见的 Wi - Fi 接口名称);如果通过有线以太网连接,选择 “Ethernet” 对应的接口,如 “eth0”(在 Linux 系统中常见的以太网接口名称) 。选择好要监控的接口后,点击 “Start” 即可开始捕获该接口上的网络流量。
权限设置: 在不同操作系统下,Wireshark 获取抓包权限的方式有所不同。
-
Windows 系统:首次运行 Wireshark 时,建议以管理员身份运行,这样可以确保 Wireshark 具有足够的权限来捕获网络数据包。如前文所述,可在开始菜单中找到 Wireshark 图标,右键选择 “以管理员身份运行” 。若不以管理员身份运行,可能会遇到无法捕获某些网络流量的问题,特别是一些需要较高权限才能访问的网络接口或协议。
-
MacOS 系统:在 MacOS 上,Wireshark 需要访问网络接口的权限才能抓包。首次运行时,系统会提示授权 Wireshark 访问 “网络接口” ,按照提示操作,输入管理员密码授权即可。此外,如果要在 MacOS 上捕获 USB 流量,可能还需要进行一些额外的权限设置和依赖库安装,可参考官方文档进行配置。
-
Linux 系统:在 Linux 系统中,如果安装时选择允许非 root 用户捕获数据包,普通用户即可正常使用 Wireshark 抓包 。若安装时未选择,可将当前用户添加到 “wireshark” 组,以获取抓包权限。使用以下命令将当前用户添加到 “wireshark” 组:
sudo usermod - a - G wireshark $USER
添加完成后,需要重新登录系统使设置生效,或者执行以下命令临时生效:
newgrp wireshark
若未正确设置权限,普通用户在使用 Wireshark 抓包时会提示权限不足,无法进行抓包操作。
通过完成上述的安装和环境配置步骤,我们就为使用 Wireshark 抓包分析 HTTP/HTTPS 请求做好了充分准备,接下来就可以正式开始抓包分析之旅啦。
四、HTTP 请求抓包实战
(一)开始抓包
一切准备就绪后,我们就可以正式开始 HTTP 请求的抓包实战啦!打开 Wireshark,进入主界面。在主界面中,你会看到众多网络接口选项,就像一个繁忙的交通枢纽,每个接口都代表着不同的网络连接通道 。比如,如果你使用的是笔记本电脑,可能会看到 “Wi-Fi” 接口,它代表着无线网络连接;如果是通过网线连接网络,那 “Ethernet” 接口则对应着有线网络连接 。
我们需要选择正在使用的网络接口,这就好比在交通枢纽中选择正确的出站口 。你可以通过观察接口旁边的实时流量统计信息,来判断哪个接口是活跃的,有数据流动的接口即为我们要选择的目标接口 。例如,“Wi-Fi” 接口下方显示有不断变化的发送和接收字节数,那就说明这个接口正在工作,我们就选择它。
选择好接口后,点击左上角的蓝色鲨鱼鳍图标(或者按下快捷键 Ctrl + E) ,就像启动了一台精密的探测器,开始捕获该接口上的网络流量。此时,Wireshark 就像一个勤劳的记录员,会将经过该接口的每一个网络数据包都记录下来 。
(二)过滤 HTTP 流量
随着抓包的进行,Wireshark 会捕获到大量的网络数据包,这些数据包包含了各种类型的网络流量,如 HTTP、DNS、TCP 等 ,就像一个装满了各种杂物的大箱子,而我们只关心其中的 HTTP 流量 。这时候,就需要使用显示过滤器来筛选出我们想要的 HTTP 流量,就好比从大箱子中挑选出特定的物品 。
在 Wireshark 的过滤栏中,输入 “http”,然后按下回车键 。这个 “http” 就是我们的过滤条件,它告诉 Wireshark 只显示 HTTP 协议相关的数据包 。瞬间,数据包列表就会发生变化,只展示与 HTTP 相关的数据包,其他类型的数据包都被隐藏起来了 ,这样我们就可以更专注地分析 HTTP 流量。
除了使用简单的 “http” 过滤条件,我们还可以根据具体需求进行更复杂的过滤 。比如,如果你只想查看来自特定 IP 地址的 HTTP 请求,可以使用 “ip.src == [192.168.1.100](192.168.1.100) and http” 这样的过滤表达式 ,其中 “[192.168.1.100](192.168.1.100)” 是你指定的源 IP 地址 。又或者,你想查看 HTTP 请求方法为 POST 的数据包,可以使用 “http.request.method == "POST"” 的过滤条件 。通过灵活运用这些过滤条件,我们可以更精准地筛选出需要分析的 HTTP 流量 。
(三)分析 HTTP 报文
在筛选出 HTTP 流量后,我们就可以选择具体的 HTTP 报文进行深入分析了 。每一个 HTTP 报文都包含了丰富的信息,就像一封详细的信件,记录了客户端和服务器之间的通信内容 。以一个常见的 HTTP GET 请求报文为例,我们来看看它的结构和内容 。
请求行:请求行位于 HTTP 报文的第一行,它包含了三个重要信息:请求方法、请求 URL 和 HTTP 版本 。例如,“GET /index.html HTTP/1.1” ,其中 “GET” 表示请求方法,告诉服务器我们想要获取资源;“/index.html” 是请求 URL,指定了我们要获取的具体资源路径,这里表示获取服务器上的 “index.html” 文件;“HTTP/1.1” 则是 HTTP 协议的版本号 。请求方法有多种,如 GET、POST、PUT、DELETE 等,每种方法都有其特定的用途 。GET 方法常用于获取资源,POST 方法常用于提交数据 。
请求头:请求头紧跟在请求行之后,它由一系列的键值对组成,就像信件中的各种说明信息 ,为服务器提供了关于请求的更多细节 。常见的请求头字段有:
-
Host:指定请求的目标主机名,例如 “Host: www.example.com” ,它告诉服务器请求的是哪个网站。
-
User - Agent:标识客户端的类型和版本信息,例如 “User - Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36” ,通过这个字段,服务器可以了解到客户端是使用什么浏览器和操作系统来访问的 。
-
Accept:表示客户端能够接受的响应内容类型,例如 “Accept: text/html,application/xhtml+xml,application/xml;q = 0.9,image/avif,image/webp,image/apng,/;q = 0.8,application/signed - exchange;v=b3;q = 0.9” ,这里客户端表明它可以接受 HTML、XML 等多种类型的内容 。
请求体:对于 GET 请求,通常没有请求体,因为 GET 请求的参数是附加在 URL 后面的 。但对于 POST 请求,请求体中会包含要提交的数据 。例如,当我们在网页上提交一个登录表单时,用户名和密码等数据就会放在 POST 请求的请求体中 。请求体的数据格式有多种,常见的有 application/x - www - form - urlencoded、application/json 等 。如果是 application/x - www - form - urlencoded 格式,数据会以 “key1 = value1&key2 = value2” 的形式呈现;如果是 application/json 格式,数据则是一个符合 JSON 语法的字符串 。
(四)追踪 TCP 流
在分析 HTTP 请求时,追踪 TCP 流是一个非常有用的功能,它可以帮助我们更好地理解整个 HTTP 请求和响应的过程 。当我们在数据包列表中找到一个 HTTP 报文后,右键点击该报文,在弹出的菜单中选择 “Follow” -> “TCP Stream” ,就像沿着一条线索追踪一个故事的发展 。
此时,Wireshark 会弹出一个新的窗口,展示整个 TCP 流的内容 。在这个窗口中,你可以看到客户端发送的 HTTP 请求和服务器返回的 HTTP 响应,它们按照时间顺序依次排列 ,就像一场对话的记录 。通过追踪 TCP 流,我们可以清晰地看到请求和响应的交互过程,了解数据是如何在客户端和服务器之间传输的 。例如,我们可以看到客户端发送请求后,服务器是如何处理请求并返回响应的,以及响应中包含了哪些数据 。这对于分析 HTTP 通信的问题,如请求超时、响应错误等,非常有帮助 。同时,追踪 TCP 流还可以让我们更好地理解 HTTP 协议的工作原理,加深对网络通信的认识 。
五、HTTPS 请求抓包实战
(一)HTTPS 抓包困境
当我们尝试使用 Wireshark 直接抓取 HTTPS 请求时,会发现与 HTTP 请求抓包有很大的不同。HTTPS 协议基于 SSL/TLS 加密,其传输的数据在网络中是以密文形式存在的。这就好比给数据穿上了一层坚固的 “加密铠甲”,使得 Wireshark 在捕获到这些数据包后,无法直接查看其中的内容,只能看到加密后的信息 。例如,在抓包列表中,HTTPS 相关的数据包协议显示为 “TLS” ,展开数据包详细信息,大部分关键数据字段都是乱码,无法从中直接获取请求的 URL、请求头和请求体等有价值的信息 。这种情况给我们深入分析 HTTPS 请求带来了很大的困难,就像面对一个上了锁的宝箱,没有钥匙就无法打开它获取里面的宝藏 。但别担心,我们可以通过一些特定的方法来获取解密的 “钥匙”,从而突破这个困境 。
(二)解密准备(以 Chrome 浏览器为例)
要解密 HTTPS 流量,我们首先需要在客户端生成 TLS 密钥日志文件,这里以 Chrome 浏览器为例来进行设置 。Chrome 浏览器支持通过设置环境变量SSLKEYLOGFILE来记录 TLS 握手过程中生成的会话密钥 。以下是具体的设置步骤:
-
Windows 系统:
-
临时设置:打开命令提示符(CMD),输入以下命令设置
SSLKEYLOGFILE环境变量,其中C:\path\to\sslkey.log是你要保存密钥日志文件的路径,可根据实际情况修改 :
-
set SSLKEYLOGFILE=C:\path\to\sslkey.log
这种临时设置的环境变量只在当前 CMD 会话中有效,关闭 CMD 窗口后设置就会失效 。
-
永久设置:如果你希望环境变量永久生效,可以通过系统属性进行设置 。右键点击 “此电脑”,选择 “属性” ;在弹出的窗口中,点击 “高级系统设置” ;在 “系统属性” 窗口的 “高级” 选项卡中,点击 “环境变量” 按钮 ;在 “系统变量” 或 “用户变量” 区域中,点击 “新建” ;在 “新建系统变量” 或 “新建用户变量” 窗口中,输入变量名
SSLKEYLOGFILE,变量值为C:\path\to\sslkey.log,然后点击 “确定” 保存设置 。设置完成后,需要重新启动相关程序(如 Chrome 浏览器),新的环境变量才会生效 。
-
MacOS 系统:
-
临时设置:打开终端,输入以下命令设置
SSLKEYLOGFILE环境变量,/Users/yourusername/sslkey.log为保存路径,需替换为你的实际路径 :
-
export SSLKEYLOGFILE=/Users/yourusername/sslkey.log
临时设置的环境变量只在当前终端会话有效,关闭终端后设置失效 。
-
永久设置:编辑你的 Shell 配置文件,如果你使用的是 bash,编辑
~/.bash_profile文件;如果使用的是 zsh,编辑~/.zshrc文件 。在文件末尾添加以下行,同样要将路径替换为你的实际路径 :
export SSLKEYLOGFILE=/Users/yourusername/sslkey.log
保存文件后,在终端中输入source ~/.bash_profile(如果是 bash)或source ~/.zshrc(如果是 zsh)使设置立即生效 。 3. Linux 系统:
-
临时设置:在终端中输入以下命令设置
SSLKEYLOGFILE环境变量,/home/yourusername/sslkey.log为保存路径,根据实际情况修改 :
export SSLKEYLOGFILE=/home/yourusername/sslkey.log
临时设置仅在当前终端会话有效 。
-
永久设置:将上述设置命令添加到你的 Shell 配置文件中,如
~/.bashrc或~/.profile文件 。在文件末尾添加export SSLKEYLOGFILE=/home/yourusername/sslkey.log,保存文件后,执行source ~/.bashrc或source ~/.profile使设置生效 。
设置好环境变量后,重新启动 Chrome 浏览器 。当你在 Chrome 浏览器中访问 HTTPS 网站时,浏览器会将 TLS 握手过程中生成的会话密钥信息记录到指定的sslkey.log文件中 ,为后续在 Wireshark 中解密 HTTPS 流量做好准备 。
(三)Wireshark 解密设置
在 Chrome 浏览器生成 TLS 密钥日志文件后,接下来需要在 Wireshark 中进行相应的配置,使其能够读取密钥日志文件并解密 HTTPS 流量 。具体步骤如下:
-
打开 Wireshark,点击菜单栏中的 “Edit”,选择 “Preferences”(快捷键 Ctrl + ,) ,打开首选项设置窗口 。
-
在首选项设置窗口中,展开 “Protocols” 选项,选择 “TLS” 。在右侧的设置区域中,找到 “(Pre)-Master-Secret log filename” 字段 ,如图 1 所示:
-
在 “(Pre)-Master-Secret log filename” 字段中,输入之前在 Chrome 浏览器中设置的 TLS 密钥日志文件的路径 ,例如
C:\path\to\sslkey.log(Windows 系统)、/Users/yourusername/sslkey.log(MacOS 系统)或/home/yourusername/sslkey.log(Linux 系统) ,然后点击 “OK” 保存设置 。 -
完成上述设置后,Wireshark 就已经配置好了从指定的密钥日志文件中读取会话密钥,用于解密 HTTPS 流量 。接下来就可以开始进行 HTTPS 抓包分析了 。
(四)抓包与分析
一切准备就绪后,我们就可以开始进行 HTTPS 抓包分析了 。在 Wireshark 中选择正在使用的网络接口,点击左上角的蓝色鲨鱼鳍图标(或者按下快捷键 Ctrl + E)开始抓包 。然后在 Chrome 浏览器中访问你想要分析的 HTTPS 网站,Wireshark 会捕获到相关的网络数据包 。
为了更方便地筛选出 HTTPS 相关的数据包,我们可以使用显示过滤器 。在 Wireshark 的过滤栏中输入tls && (http || http2 || http3) ,这个过滤器的作用是筛选出 TLS 协议且与 HTTP、HTTP/2 或 HTTP/3 相关的数据包 。按下回车键后,Wireshark 的数据包列表将只显示符合条件的 HTTPS 相关数据包 。
现在,我们可以选择具体的 HTTPS 报文进行分析了 。与 HTTP 报文类似,HTTPS 报文也包含请求行、请求头和请求体(如果有)等部分 。不同的是,由于之前的解密设置,我们现在可以看到这些部分的明文内容 。例如,在请求行中,我们可以看到请求方法(如 GET、POST 等)、请求 URL 和 HTTP 版本 ;在请求头中,可以看到各种请求头字段,如Host、User - Agent、Accept等 ;如果是 POST 请求,还可以在请求体中看到提交的数据内容 。通过对这些明文内容的分析,我们可以深入了解 HTTPS 请求的细节,比如请求的资源、客户端的信息以及提交的数据等 ,从而更好地进行网络分析和故障排查 。同时,我们也可以右键点击某个 HTTPS 报文,选择 “Follow” -> “TLS Stream” ,追踪 TLS 流,查看整个 HTTPS 请求和响应的交互过程 ,就像在分析 HTTP 请求时追踪 TCP 流一样,这有助于我们更全面地理解 HTTPS 通信的过程 。
六、常见问题与解决方法
(一)抓不到包
在使用 Wireshark 抓包时,有时会遇到抓不到包的情况,这可能由多种原因导致,以下为你分析常见原因及提供对应解决方案:
-
网卡选择错误:Wireshark 支持多个网络接口抓包,如果选择了错误的网卡,自然无法捕获到所需的网络流量。比如,你的电脑同时连接了有线网络和无线网络,若选择了未使用的网络接口,就会抓不到包 。解决方法是仔细确认当前使用的网络接口,打开 Wireshark 的网络接口列表(快捷键 Ctrl + I) ,根据接口的实时流量统计信息或名称来判断,选择正在使用的网络接口进行抓包。
-
权限不足:在某些操作系统中,Wireshark 需要管理员权限才能捕获所有网络流量 。以 Windows 系统为例,如果未以管理员身份运行 Wireshark,可能无法捕获到一些需要较高权限才能访问的网络接口的数据包 。解决方案是右键点击 Wireshark 图标,选择 “以管理员身份运行” 。在 MacOS 系统中,需要授权 Wireshark 访问网络接口;在 Linux 系统中,若普通用户没有抓包权限,可将用户添加到 “wireshark” 组获取权限 。
-
网络连接问题:网络连接不稳定或出现故障也可能导致抓不到包 。例如,网线松动、Wi - Fi 信号弱等问题都可能使网络连接中断,从而无法捕获到数据包 。可以通过 Ping 命令测试网络连接是否正常,如
ping www.baidu.com。若 Ping 不通,检查网络连接设备,如路由器、交换机等,确保网线连接正常,Wi - Fi 信号强度足够 。 -
防火墙或安全软件限制:防火墙或其他安全软件可能会限制 Wireshark 对网络接口的访问,导致抓包失败 。比如,某些防火墙会阻止未经授权的程序捕获网络流量 。可以暂时关闭防火墙或在防火墙设置中允许 Wireshark 访问网络 。同时,检查其他安全软件的相关设置,确保它们不会干扰 Wireshark 的抓包操作 。
(二)解密失败
在进行 HTTPS 抓包分析时,解密失败是一个常见问题,以下是针对此问题的检查步骤和解决方案:
-
密钥日志文件路径错误:在 Wireshark 中设置的 TLS 密钥日志文件路径必须与浏览器生成密钥日志文件的路径一致 。如果路径设置错误,Wireshark 将无法读取密钥,导致解密失败 。仔细检查在 Wireshark 的 “Edit” -> “Preferences” -> “Protocols” -> “TLS” 中设置的 “(Pre)-Master-Secret log filename” 字段,确保路径准确无误 。如果不确定浏览器生成的密钥日志文件路径,可以重新设置环境变量
SSLKEYLOGFILE,并在重新启动浏览器后,确认文件生成的位置 。 -
浏览器配置问题:不同浏览器对于生成 TLS 密钥日志文件的支持和配置方式可能略有不同 。以 Chrome 浏览器为例,如果环境变量
SSLKEYLOGFILE设置正确,但浏览器未将密钥信息记录到日志文件中,可能是浏览器版本不兼容或存在其他配置问题 。确保使用的浏览器版本支持生成 TLS 密钥日志文件功能,并且在设置环境变量后,重新启动浏览器使设置生效 。此外,某些浏览器插件或扩展可能会干扰密钥日志的生成,尝试禁用所有插件后再次测试抓包解密 。 -
证书问题:如果服务器使用的证书存在问题,如证书过期、证书不被信任等,也可能导致解密失败 。在 Wireshark 中,检查捕获到的 TLS 握手过程中的证书信息,查看是否有相关错误提示 。对于过期或不被信任的证书,需要联系服务器管理员进行处理,确保服务器使用的证书是有效的且被客户端信任 。
(三)报文分析困难
对于初学者来说,分析 HTTP/HTTPS 报文可能会感到困难,以下是一些建议帮助解决这个问题:
-
学习网络协议知识:HTTP 和 HTTPS 报文的分析需要对网络协议有一定的了解,包括 TCP/IP 协议栈、HTTP 协议和 TLS 协议等 。可以通过阅读相关的网络技术书籍、在线教程和博客来学习这些知识 。例如,《计算机网络:自顶向下方法》这本书详细介绍了计算机网络的原理和各种协议 ,通过学习这本书,可以深入理解 HTTP 和 HTTPS 协议的工作原理,从而更好地分析报文 。此外,还可以参加一些网络技术培训课程或在线学习平台的相关课程,如 Coursera 上的 “Computer Networks” 课程,系统地学习网络协议知识 。
-
借助 Wireshark 帮助文档:Wireshark 提供了丰富的帮助文档,其中包含了各种协议的解析说明和使用教程 。在分析报文时,如果遇到不理解的字段或协议,可以查阅 Wireshark 的帮助文档 。点击 Wireshark 菜单栏中的 “Help”,选择 “Wireshark Help” ,在打开的帮助文档中,可以通过搜索功能查找相关协议或字段的解释 。例如,在分析 HTTP 报文时,对于某个请求头字段的含义不清楚,可以在帮助文档中搜索该字段,获取详细的解释和说明 。同时,帮助文档中还包含了一些常见问题的解答和使用技巧,能够帮助我们更好地使用 Wireshark 进行报文分析 。
七、总结与拓展
(一)总结抓包要点
在使用 Wireshark 进行 HTTP/HTTPS 请求抓包分析的过程中,我们掌握了一系列关键步骤和要点。首先,要正确安装和配置 Wireshark,根据不同操作系统选择合适的安装方式,并设置好网络接口和权限,确保能够顺利捕获网络流量 。在 HTTP 请求抓包时,精准选择网卡启动抓包,运用显示过滤器筛选 HTTP 流量,从 HTTP 报文的请求行、请求头和请求体中获取关键信息,通过追踪 TCP 流梳理请求与响应的完整过程 。而针对 HTTPS 请求抓包,由于其数据加密特性,需要借助浏览器生成 TLS 密钥日志文件,并在 Wireshark 中正确设置路径以实现解密,从而分析报文内容 。同时,我们还了解了抓包过程中可能遇到的问题及解决方法,如抓不到包可能是网卡选择、权限、网络连接或防火墙限制等原因导致;解密失败可能与密钥日志文件路径错误、浏览器配置问题或证书问题有关;报文分析困难则可以通过学习网络协议知识和借助 Wireshark 帮助文档来克服 。这些步骤和要点相互关联,是我们进行网络抓包分析的核心技能,需要在实践中不断练习和巩固 。
(二)拓展应用场景
Wireshark 的应用场景十分广泛,除了本文重点介绍的 HTTP/HTTPS 请求抓包分析外,在网络故障排查、安全审计、性能优化等领域也发挥着重要作用 。在网络故障排查中,当网络出现卡顿、丢包或无法访问特定网站等问题时,Wireshark 可以捕获网络数据包,通过分析 TCP 连接、IP 地址、端口号等信息,定位故障点,比如判断是否存在网络环路、IP 冲突或路由器配置错误等 。在安全审计方面,Wireshark 能实时监控网络流量,检测潜在的安全威胁,例如发现恶意软件的网络通信特征、识别端口扫描行为或检测到异常的网络协议使用 。对于企业来说,利用 Wireshark 进行安全审计,有助于及时发现并防范网络攻击,保护企业的网络安全 。在性能优化领域,通过分析 Wireshark 捕获的数据包,我们可以了解网络流量的分布情况,找出占用带宽较大的应用或服务,评估网络设备的性能瓶颈,从而有针对性地进行优化,如调整网络拓扑结构、升级网络设备或优化应用程序的网络请求策略 。此外,在软件开发过程中,Wireshark 可用于调试网络通信相关的功能,验证软件与服务器之间的数据交互是否正常 ;在网络教学中,它也是一个非常实用的工具,帮助学生直观地理解网络协议的工作原理和数据传输过程 。希望读者能进一步探索 Wireshark 在这些领域的应用,挖掘其更多的价值 。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)