打开一个视频网站,播放视频,同时打开浏览器开发者工具进行抓包,发现播完一个7分钟的视频,只抓到了一个ts请求包,而这个ts文件才12秒,怪了。
这种情况可能是因为视频网站采用了分段传输(segmented streaming)的方式,将整个视频分成多个小的ts文件进行传输。每个小的ts文件通常只包含数秒的视频内容,而不是整个视频的完整内容。
当您开始播放视频时,网站服务器会通过网络传输第一个小的ts文件,然后播放器会解码和播放该文件。随后,播放器会从服务器请求下一个小的ts文件,然后解码和播放该文件。这个过程会一直持续到整个视频播放完毕。
在您的情况下,由于您只抓到了一个ts请求包,可能是因为您只在播放器请求了第一个小的ts文件时进行了抓包,而没有在后续的请求中进行抓包。这可能是因为浏览器开发者工具默认只捕获HTTP请求的头信息,而不是整个请求的数据包。您可以尝试在开发者工具中打开捕获HTTP请求的数据包选项,这样就可以看到所有的HTTP请求和响应数据包,从而更好地理解视频的传输过程。
抓包工具通常不会漏抓,但在某些情况下可能会出现抓包数据不全的情况。
在你的情况下,视频可能采用了分片传输的方式,即将视频分成多个小块(如你提到的 .ts 文件),并通过多个 HTTP 请求进行传输。这些小块按顺序拼接起来就成了完整的视频。这种方式可以有效减少单个请求的数据量,提高传输效率。
如果你的抓包工具在分片传输的情况下只捕获了部分请求,那么就可能导致你只抓到了部分视频数据。这种情况下,你可以尝试使用更高级的抓包工具,或者尝试调整抓包设置,以确保能够完整地捕获所有请求。
此外,视频网站还可能采用其他方式来保护视频资源,如 DRM(数字版权管理)等技术。这些技术会对视频进行加密或者其他保护措施,以防止非授权用户获取视频数据。如果视频被加密或者其他保护措施,那么抓包工具可能无法获取到完整的视频数据,从而导致你只能抓到部分数据。