查看wireshark抓包中含有gzip内容的方法

移动APP或者一些网页的http为了提高效率,节约流量,包体经常采用压缩方式传输,

判断是否采用压缩最直观的可以从抓包的request和response头看到,如下图的content-encoding就可以知道了。


那么对于抓到经过压缩的包怎么看呢?在wireshark上看到的是一堆乱码,下面就介绍通过UE编辑后进行查看的方法:

1.      下载并按照UE (http://pan.baidu.com/s/1kT3iWbd

2.      开启wireshark并进行抓包

3.      选择该http中任意一个TCP数据,右击选择Follow TCP Stream


4.选择保存为原始数据(RAW),如保存为“test.zip”

 

5.使用ue打开刚才保存的“test.zip”文件,切换到十六进制编辑模式,找到压缩文件的开头(1F8B),然后把1F8B前面的内容全部删掉,留下1F8B已经后面的内容后保存。


 

6.保存完之后关闭此文件,通过解压软件就可以直接解压出内容来了


### 如何使用 Wireshark 抓取并分析 HTTP GET 请求 #### 工具准备 在开始抓取和分析 HTTP GET 请求前,需先下载并安装 WireShark 网络抓包分析工具[^1]。完成安装后,打开软件。 #### 开始抓包 启动 Wireshark 后,在界面中选择当前设备正在使用的网卡接口用于捕获数据包。如果不确定具体哪个网卡被使用,则可以尝试逐一测试或者依据 IP 地址来判断对应的网卡名称[^2]。 #### 设置过滤条件 为了专注于 HTTP 协议的数据流,减少无关干扰信息,在顶部的过滤器输入框中键入 `http` 来筛选所有的 HTTP 流量。进一步地,若只想观察具体的 GET 请求操作,则可以在过滤器栏内精确指定为 `http.request.method == "GET"` 这样只会显示那些符合标准的请求包。 #### 数据捕捉过程 点击开始按钮之后,Wireshark 将会实时监控所选网络接口上的通信活动,并记录下符合条件的所有数据包。当访问目标网站时(推荐找支持纯 HTTP 的站点以便更清晰看到未加密的内容),这些交互产生的 GET 请求及其响应将会被捕获下来。 #### 分析已捕获的数据包 一旦获得了期望中的 GET 请求数据包,双击它就可以展开详细的视图供深入研究: - **物理层**: 显示最底层比特序列情况; - **数据链路层 (Ethernet II)**: 提供 MAC 地址等相关细节; - **网络层 (IPv4/IPv6)**: 展现源地址、目的地址以及其他重要的路由参数; - **传输层 (TCP/UDP)**: 描述端口号及其他连接管理方面的属性; - **应用层 (HTTP)**: 此处包含了实际发送给服务器的信息以及接收回来的结果。对于 GET 方法来说特别关注的是 URL 路径部分还有可能附加的一些查询字符串参数。 ##### 应用层 - HTTP 请求头部解析 每条消息都由状态行开头跟随若干首部字段组成。例如典型的 GET 请求看起来像这样: ```plaintext GET /index.html?name=value&another=param HTTP/1.1\r\nHost: www.example.com\r\nUser-Agent: Mozilla/5.0...\r\nAccept-Encoding: gzip, deflate\r\nConnection: keep-alive\r\n\r\n ``` 其中每一项都有特定用途: - `GET`: 表明这是客户端向服务端发起的一个读取资源的操作命令。 - `/index.html?...`: 定义了想要获取的具体文档路径加上任何必要的查询变量。 - 随后的各行则提供了关于此次调用的各种元数据说明比如浏览器类型(`User-Agent`) 或者可接受压缩算法 (`Accept-Encoding`)等等。 --- ### 示例代码展示 下面是一个简单的 Python 脚本来模拟发出一个基本的 HTTP GET 请求,这可以帮助理解真实世界里的请求构成是什么样的样子。 ```python import requests url = 'http://example.org/' headers = { 'User-Agent': 'Mozilla/5.0', } response = requests.get(url, headers=headers) print(f'Status Code: {response.status_code}') print('Headers:') for key,value in response.headers.items(): print(f' {key}: {value}') if response.ok: print('\nBody Content:') print(response.text[:200]) # Print first 200 characters of body content. else: print("\nThe request failed.") ``` 此脚本执行后生成的实际效果应该能在 Wireshark 中匹配到相应的流量模式。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值