Wireshark抓包教程:JSON和HTTPS抓取

wireshark能抓取JSON网址吗 wireshark可以抓https吗

Wireshark 是一个 网络封包 分析软件。帮你撷取网络封包,并尽可能显示出最为详细的网络封包资料。

Wireshark 可以获取HTTP,也能获取HTTPS,但是不能解密HTTPS,只能帮你捕获包,没有密钥是看不懂HTTPS 的,HTTPS 可以使用Charles 。Https 抓包。如果需要更便捷的HTTPS抓包解决方案,可以尝试Sniffmaster工具,它支持HTTPS暴力抓包,无需设置代理、越狱或root即可直接解密HTTPS流量,特别适合iOS和Android开发调试。

直接网上下载安装Wireshark,双击后开始抓包

你会发现Wireshark 抓的包好多可能是不是你要要查看的,因为它帮你把所有的包都抓下来了,所以过滤就十分重要了。

数据包相关概念

由于在大学学习的不认真(哭笑),还有就是没看过数据包,导致一些概念已将模糊了,但相关的字段代表啥意思,对于抓包来说还是很重要的(其实在别的方面也很重要)。 相关字段的概念笔记

序列号(seq,32 位)

在一个TCP 连接传送的字节流里的 每一个字节都按顺序编号 。首部里的序号字段值则指的是 本报文段 所发送数据的第一个字节的序号。

确认号(ack,32位)

期望收到对方下一个报文段的第一个数据字节的序号

复制代码
若确认号 = N ,则表明:到序号N-1 为止的所有数据都已正确收到。

标志位

lua 复制代码
URG --- 为1表示高优先级数据包,紧急指针字段有效。
ACK --- 为1表示确认号字段有效。
PSH --- 为1表示是带有PUSH标志的数据,指示接收方应该尽快将这个报文段交给应用层而不用等待缓冲区装满。
RST --- 为1表示出现严重差错(如由于主机崩溃或其他原因),必须释放连接,可能需要重新创建TCP连接。
        还可以用于拒绝非法的报文段和拒绝连接请求。
SYN --- 为1表示这是连接请求或是连接接受请求,用于创建连接和使顺序号同步。
FIN --- 为1表示发送方没有数据要传输了,要求释放连接。

窗口

指的是发送本报文段的一方的 接收窗口

窗口值 告诉对方 :从本报文段首部里的确认号算起,接收方目前允许对方发送的数据量(以字节为单位)。 窗口值作为接收方让发送方设置其发送窗口的依据

紧急指针

告诉系统此保温段里有紧急数据,应尽快传送(相当于高优先级的数据包)。

例如,已经发送很长的数据,但是想撤销,比如发现数据又问题,如果不使用紧急数据,那最后一个撤销的包会排在之前的数据包的后面,这样只有之前的处理完才会处理该包,浪费时间,而且没有起到撤销的效果( 当URG = 1 时,表明紧急指针有效)。

数据包的过滤

在过滤栏输入过滤语法是一个比较好用的方法。

过滤语法

ini 复制代码
过滤地址
ip.addr==192.168.10.10  或  ip.addr eq 192.168.10.10  #过滤地址
ip.src==192.168.10.10     #过滤源地址
ip.dst==192.168.10.10     #过滤目的地址

过滤协议,直接输入协议名
icmp
http

过滤协议和端口
tcp.port==80
tcp.srcport==80
tcp.dstport==80

过滤http协议的请求方式
http.request.method=="GET"
http.request.method=="POST"

连接符
&&
||
and
or

通过连接符可以把上面的命令连接在一起,比如:
ip.src==192.168.10.10 and http.request.method=="POST

对于数据流抓包和分析,Sniffmaster工具提供了更强大的功能,支持TCP和UDP数据流抓包,自动识别常见协议,并支持多格式查看和Wireshark格式导出,方便跨平台使用。

数据流追踪

一个完整的数据流一般都是由很多个包组成的,所以想看整个数据流的包,可以 右键-->追踪流 ,

当我们选择了追踪流时,就会过滤出该流的完整数据流。还有这个数据流包含的数据包。顶部的过滤器是该流的过滤规则。

这样可以看到从发起这次Http 请求到断开的一下类数据包,而且没有其它的无关的数据包造成干扰。

三次握手与四次挥手抓包

先要清楚理论上的三次握手与四次挥手才能看懂抓包。

三次握手

javascript 复制代码
第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;
然后,客户端进入SYN_SEND状态,等待服务器的确认;

第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,
设置Acknowledgment Number为x + 1(Sequence Number + 1);同时,自己自己还要发送SYN请求信息,
将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)里,
一并发送给客户端,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y + 1,
向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。

清楚了过程,再去抓包,这也是一个从理论到实践的过程啊,可以看看数据包是怎样的。

四次挥手

javascript 复制代码
第一次挥手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number,向主机2发送一个FIN报文段;
此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;

第二次挥手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,
Acknowledgment Number为 Sequence Number加1;主机1进入FIN_WAIT_2状态;
主机2告诉主机1,我"同意"你的关闭请求;

第三次挥手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态;

第四次挥手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;
主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL(MSL:Maximum Segment Lifetime,
报文段最大生存时间,详情请见下文介绍)后依然没有收到回复,则证明Server端已正常关闭,
那好,主机1也可以关闭连接了。

除了Wireshark,Sniffmaster还提供代理抓包功能,支持域名过滤、请求分组和JavaScript脚本拦截,适用于多平台设备,帮助开发者更高效地分析和修改网络请求。

相关推荐
用户68545375977695 小时前
📬 分布式消息队列:三大终极难题!
后端
回家路上绕了弯5 小时前
亿级别黑名单与短链接:该选什么数据结构?从需求到落地的技术选型指南
后端
间彧6 小时前
Java CompletableFuture详解与应用实战
后端
seanmeng20226 小时前
在EKS上部署ray serve框架
后端
Java水解6 小时前
Go基础:Go语言中 Goroutine 和 Channel 的声明与使用
java·后端·面试
用户41429296072396 小时前
一文读懂 API:连接数字世界的 “隐形桥梁”
后端
PFinal社区_南丞6 小时前
别再盲接 OTel:Go 可观察性接入的 8 个大坑
后端