用Wireshark下载微信小程序里的视频【图文教程】
目录
第一节 准备工作
1、登录网页版微信
2、下载并安装Wireshark软件
3、记录本机“IPv4地址”
第二节 下载步骤
0、关闭非必要开启的程序
1、打开“Wireshark网络分析器”,在当前网络连接方式下开始抓包
2、播放小程序
3、视频自动播放一段时间后,拖动进度条
4、停止捕获(抓包),加过滤器滤掉无用流
5、选择封包列表中的一行TCP流,进行追踪
6、复制提取到的视频源址,到浏览器地址栏
7、进入视频播放页面,保存视频
第三节 常见“出错”的排查与分析
1、实际下载正确
2、实际下载错误
第四节 Wireshark 拓展知识
1、过滤器编写
2、Wireshark 默认着色规则
3、Wireshark 补充资料
声明
*本文以微信“看一看+”小程序为例,仅做网络协议研究和学习使用,切勿用于不当商业用途。
具体步骤在第二节,可略过第一节。
第一节 准备工作
1、登录网页版微信
准备好需要下载视频的微信小程序链接。
分享/转发微信小程序的链接,方便自己可以快速访问。
本文采用的是3.1.0.72版本的电脑版微信。
2、下载并安装Wireshark软件
在Wireshark官网的下载区(https://www.wireshark.org/download.html),根据实际情况选择适合的版本,安装默认勾选的所有选项,完成安装。
本文中采用的是3.4.3版本的Wireshark(基于本人64位Windows 10的操作系统),安装程序后占180M左右存储空间。
3、记录本机“IPv4地址”
使计算机连接网络,在任务栏单击“Internet 访问”图标。
单击此时网络连接方式的“属性”,在“属性”模块下可查看本机“IPv4地址”(192.168.X.X)。
下面以WiFi为例:
第二节 下载步骤
0、关闭非必要开启的程序
建议只开启微信、Wireshark网络分析器和安全防护软件。
避免其它软件(如浏览器、聊天软件)上下传输大量信息,产生大量流,干扰视频流的获取。
1、打开“Wireshark网络分析器”,在当前网络连接方式下开始抓包
(1)进入软件首页界面(即欢迎界面),选择当前计算机网络连接。
如何选择计算机网络连接的方式?
选择“不规则波浪形”的,不选择“直线形”的。
无线WiFi下,选“WLAN”
有线宽带下,选“本地连接* X”或者“以太网* X”(X为数字)
(2)双击进入,或者右键点击“Start capture”,启动抓包。
2、播放小程序
(1)主工具栏上,先点击左上角的红色“停止捕获分组按钮”(方块按钮),再点击蓝色“开始捕获按钮”(鲨鱼背鳍按钮),选择“直接退出,不保存”清空历史记录,正式开始抓包。
(2)点击小程序链接,进入"看一看+"视频播放界面。
3、视频自动播放一段时间后,拖动进度条
为了能准确地抓到,使其请求数据,提高成功率,可在播放中往后(右)缓慢拖动进度条。
拖到进度条中间,不要拖到最后(最右)。
4、停止捕获(抓包),加过滤器滤掉无用流
(1)等到分组列表中出现大量“Protocal”(协议名称)为“TCP”的流时,再点击一次红色“停止捕获分组按钮”(方块按钮)。
“TCP”流:底色为浅紫/淡绿的行,在“Protocal”协议列下显示为“TCP”。
(2)用抓取过滤器进行过滤,过滤掉无用流,锁定少部分适合追踪的流。
在过滤器工具栏输入:ip.dst==192.168.X.X && tcp
[意义]只保留 “目的IP地址”是192.168.X.X 同时 “协议类型”是TCP 的流。
[注意]192.168.X.X为本机“IPv4地址”。
5、选择封包列表中的一行TCP流,进行追踪
(1)选定符合下列标准的一行流。
a. 拖行“分组列表右侧的滚动按钮”至滚动栏中下方,观察追踪流过程里靠中后时间段(视频播放了一段时间的时候)的流
b. “Protocal”协议名称:为“TCP”——在封包列表中,浅紫色/淡绿色流集中大量出现的区域
c. “Destination”目的地址:为本机“IPv4地址”——192.168.X.X
d.“Info”信息:有显示[TCP segment of a reassembled PDU]——[重组PDU的TCP段]
e.“Info”信息:有显示Len,且Len≠0——字节长度≠0
(2)在此行上单击右键,先选择“追踪流”,再选择“TCP流”,进入到追踪TCP流的界面。
*注意:本教程中的视频地址,仅作为例子阅读学习,不需实际访问。且受限于教程作者访问时的网络配置和软件数据,阅读者实际访问地址时很可能会被拒绝。另为了隐私和安全,请登录自己的微信账号,在自己的微信界面中进行流解析和视频提取。
例1、浅紫色TCP流
例2、淡绿色TCP流
6、复制提取到的视频源址,到浏览器地址栏
协议类型://服务地址:端口号/路径(?询问)
[例1]https://blog.csdn.net/baidu_38290612/article/details/114522978
[例2]https://27.158.131.31:49155/om.tc.qq.com/A-S9gAdhAe7slBh8taNyFHs8NO5bBDNV8f8jsE_RNpY/svp_50001/szg_5969_50001_0bf2mqackaajka.f622.mp4?vkey=9A42ACA537B3765797CAD
[注意]“端口号”可省略,“?询问”不是必需;“路径”可以无限延展,“https://”在追踪流时一般会隐藏。
(1)提取视频流的网页地址的前段,即服务地址:端口号部分,打开新浏览器标签页,并复制到地址栏。
位置:红底红字代码块的第二段,“Host: ”后的地址片段
*注意:不复制“Host: ”这几个字符,不复制“Host:”后面的空格
例1、浅紫色TCP流
例2、淡绿色TCP流
(2)提取视频流的网页地址的后段,即/路径?询问部分,在刚才复制的地址片段后面,复制现地址片段至地址栏。
位置:红底红字代码块的第一段,从“GET ”到“ HTTP/1.1”之间的地址片段
*注意:不复制“GET ”、“ HTTP/1.1”这些字符,不复制“GET”后面、“HTTP/1.1”前面的空格
*注意:一般地址片段中含有“mp4”等视频格式英文字符,不含视频格式的英文字符的地址可能是提取错误,请返回上方步骤“5、选择封包列表中的一行TCP流,进行追踪”,选择新流或者重新捕获流进行追踪
例1、浅紫色TCP流
例2、淡绿色TCP流
(3)由于前段网址+后段网址拼接,完整视频源址URL提取成功。
7、进入视频播放页面,保存视频
(1)在地址栏中回车,稍等后视频自动播放。
例1、浅紫色TCP流
例2、淡绿色TCP流
(2)在视频上单击右键,选择“视频另存为”;输入文件名和保存路径后,下载视频。
例1、浅紫色TCP流
例2、淡绿色TCP流
第三节 常见“出错”的排查与分析
*本教程的技术方法经过验证,可正常下载各个上传者的视频。尤其是在微信和Wireshark软件版本相近、配置相似的情况下。
*排查方法已写明如下,方便各位朋友排查,不必再询问作者为什么下载错误了~
1、实际下载正确
(1)下载的文件是正确,只是误将图片格式的“动画”,认为是视频格式。
→需确认原“动画”是多媒体文件,而不是图片文件
a)所有多媒体文件(MP4、MPEG、AVI、ASF、MOV、WMV、FLV等格式)是多张图像的动态连续变化,是视频;
某些图片文件(gif等格式)也是多张图像的动态连续变化,看起来像短视频,实际是图像。
b)大部分图片文件(bmp、jpg、png、svg、psd等格式)是一张静态的图像。
2、实际下载错误
(1)追踪的流列表不是完整的,被过滤器滤掉有效信息。
→“停止捕获(抓包),加过滤器滤掉无用流”这一步骤出错
a)软件在过滤器工具栏中自动生成了过滤器,请关闭这一过滤器,保留全量追踪到的流。
常见自动过滤代码格式为:tcp.stream.eq XX(X为数字)。
b)安装了其它监听软件或者开发软件,占用了默认TCP的80端口,使得默认通用的过滤器过滤错误(过滤掉有效端口信息,保留无效端口信息)。
对于编写的过滤代码(ip.dst==192.168.X.X && tcp && tcp.port == 80),需去除针对端口过滤的代码(tcp.port == 80),保留并应用针对目的地址和协议过滤的代码(ip.dst==192.168.X.X && tcp)。
(2) 选定的流不是符合追踪标准的、要下载的视频的流,追踪到的流是其它视频的数据。
→“选择封包列表中的一行TCP流,进行追踪”这一步骤出错
a)没有关闭其它聊天通讯程序(如QQ、钉钉),或者微信也在同时发送其它视频或动画表情。
追踪视频的流是动态追踪,在此过程中,微信和其它聊天通讯程序也在实时刷新,追踪到的视频的流可能是其它正在传送的视频或动画的流。
获到的地址其实不是微信“看一看+”的视频的地址,而是微信其它对话、或者其它程序里传送的视频或动画的地址。
b)想要下载的视频实际已经播放完毕,捕获到的视频地址不是第一个打开的视频的地址,实际是下一个(自动播放)的视频的地址。
“看一看+”小视频一般较短,使用Wireshark时,要注意准备好后再开始捕捉,并及时停止捕捉。
(3)其它未按照本教程操作,而产生的错误
→重新进行第二节的操作,多次尝试捕捉不同的正常流,避开错误或异常的流。
第四节 Wireshark 拓展知识
1、过滤器编写
(1)过滤器编写规则
a. 表达符号
与:&&或者and
或:||或者or
非:!或者not
b. 比较符号
等于:eq或==
不等于:ne或!=
大于:gt或>
小于:lt或<
大于等于:ge或≥
小于等于:le或≤
(2)过滤器编写例子
a. 对源地址进行过滤
ip.src == 192.168.0.1
b. 对目的地址进行过滤
ip.dst == 192.168.0.1
c. 对源地址或者目的地址进行过滤
ip.addr == 192.168.0.1
d. 对协议进行过滤
http
e. 针对端口的过滤(视传输协议而定)| 捕获某一端口的数据包(以TCP协议为例)
tcp.port == 80
f. 针对长度的过虑(长度指数据段的长度)
udp.length < 20
http.content_length <=30
2、Wireshark 默认着色规则
(1)视图→着色规则→Wireshark · 着色规则 Default
Wireshark · 着色规则 Default
可以粗略地看到,黑色背景代表各类错误,红色背景代表各类异常,其它颜色代表正常。
Bad TCP:tcp.analysis.flags && !tcp.analysis.window_update
即TCP解析出错,通常重传,乱序,丢包,重复响应都在此条规则的范围内。
HSRP State Change:hsrp.state != 8 && hsrp.state != 16
HSRP即热备份路由协议(Hot Standby Router Protocol),这条规则表示状态非active和standby。
Spanning Tree Topology Change:stp.type == 0x80
生成树协议的状态标记为0x80,生成树拓扑发生变化。
OSPF State Change:ospf.msg != 1
OSPF(Open Shortest Path First,开放式最短路径优先协议)的msg类型不是hello。
ICMP errors:icmp.type eq 3 || icmp.type eq 4 || icmp.type eq 5 || icmp.type eq 11 || icmpv6.type eq 1 || icmpv6.type eq 2 || icmpv6.type eq 3 || icmpv6.type eq 4
ICMP协议错误,协议的type字段值错误。
ARP:arp
即ARP协议
ICMP:icmp || icmpv6
即icmp协议
TCP RST:tcp.flags.reset eq 1
TCP流被RESET。
SCTP ABORT:sctp.chunk_type eq ABORT
串流控制协议的chunk_type为ABORT(6)。
TTL low or unexpected:( ! ip.dst == 224.0.0.0/4 && ip.ttl < 5 && !pim) || (ip.dst == 224.0.0.0/24 && ip.dst != 224.0.0.251 && ip.ttl != 1 && !(vrrp || carp))
TTL异常。
Checksum Errors:eth.fcs_bad==1 || ip.checksum_bad==1 || tcp.checksum_bad==1 || udp.checksum_bad==1 || sctp.checksum_bad==1 || mstp.checksum_bad==1 || cdp.checksum_bad==1 || edp.checksum_bad==1 || wlan.fcs_bad==1
条件中的各类协议的checksum异常,在PC上抓包时网卡的一些设置经常会使Wireshark显示此错误。
SMB:smb || nbss || nbns || nbipx || ipxsap || netbios
Server Message Block类协议。
HTTP:http || tcp.port == 80 || http2
HTTP协议,这是很简陋的识别方法。
DCERPC:dcerpc
即DCE/RPC,分散式运算环境/远端过程调用(Distributed Computing Environment / Remote Procedure Calls)协议。
Routing:hsrp || eigrp || ospf || bgp || cdp || vrrp || carp || gvrp || igmp || ismp
路由类协议。
TCP SYN/FIN:tcp.flags & 0x02 || tcp.flags.fin == 1
TCP连接的起始和关闭。
TCP:tcp
TCP协议。
UDP:udp
UDP协议。
Broadcast:eth[0] & 1
广播数据。
System Event:systemd_journal || sysdig
系统调用及系统事件等系统活动。
3、Wireshark 补充资料
Wireshark是世界上最广泛使用的网络协议分析器。Wireshark软件是免费安装的。
- 深入检查数百种协议
- 实时捕获和离线分析
- 多平台:在Windows,Linux,macOS,Solaris,FreeBSD,NetBSD和许多其他操作系统上运行
- 业界最强大的显示过滤器
- 丰富的VoIP分析
- 可以从以太网,IEEE 802.11,PPP / HDLC,ATM,蓝牙,USB,令牌环,帧中继,FDDI等读取实时数据(取决于使用平台)
- 对许多协议的解密支持,包括IPsec,ISAKMP,Kerberos,SNMPv3,SSL / TLS,WEP和WPA / WPA2
- 可以将着色规则应用于数据包列表,以进行快速,直观的分析
- 输出可以导出为XML,CSV或纯文本
声明
本教程所下视频,都是网络上公开访问和分享的视频;若下载时提示有无版权或禁止下载的提醒,请遵守视频方的规定、停止下载。
本下载视频的方法,仅用于学习研究,所下视频不得用于商业盈利。
如有侵权,请联系本作者修改或删除。
用Wireshark下载微信小程序里的视频【图文教程】相关推荐
- 教你下载微信小程序里的视频
目录 利用 Fiddler (http抓包工具) IDM 油猴脚本下载 利用 Fiddler (http抓包工具) 在电脑上打开了小程序的视频,但是我们现在还是不能获取到视频的url地址,这里就需要用 ...
- 通过wireshark下载微信小程序视频一例
一.准备 wireshark 下载地址[https://www.wireshark.org/download.html] 微信 windows版 二.打开wireshark 打开wireshark ...
- 下载微信小程序中的视频
工具准备: Fiddler 我这里用的5.0的版本.(这个用来抓取视频下载地址) Internet Download Manager(idm)版本6.37(这个用来下载视频) 步骤: 打开Fiddle ...
- 教你如何用手机下载视频号[微信小程序]中的视频
** 如何下载微信视频号**[微信小程序]**中的视频 ** 事情是这样的,因为近期所在工作单位要迎接检查,老板发了几个小程序视频给我,需要我把他下下来,我最初找了一下,并不能够找到下载按钮,就打算改 ...
- 微信小程序里的block
1 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性. 2 因为wx:if是一个控制属性,需要将它添加到一个标签上.如果要一次性判断多个组件标签,可以使用 标签将多个组件包 ...
- 微信小程序上传图片到html,在微信小程序里上传图片
在微信小程序里上传图片. 上传图片 JS//index.js Page({ data:{ tempFilePaths:[], uploadLinks:[], }, uploadImg() { var ...
- 微信小程序开发导航:精品教程+网友观点+demo源码(5月9日更新)
1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...
- 使用Filler4提取微信小程序中的视频
因为需要做防范电信网络诈骗的宣传,但是相关视频网站的内容都不适合宣传使用,最后在微信小程序搜索到一些合适的内容,但是微信小程序的视频不能直接下载,就考虑通过获得文件地址直接下载. 1.机器环境 系统: ...
- 视频教程-微信小程序快速入门视频课程-微信开发
微信小程序快速入门视频课程 北京八维研修学院技术工程师,5年大型项目实战开发经验,3年授课经验. 孟宪杰 ¥168.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 AP ...
- 【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
可在系列教程的基础上继续开发,也可以单独使用 [微信小程序-原生开发]系列教程 效果预览 代码实现 点击触发生成海报 在活动详情页,指定点击某图标/按钮,触发跳转到生成海报的页面 pages\comp ...
最新文章
- php多表存储,php – MySql在一个单元格中存储另一个表的多个引用并选择它?
- leetcode 179. 最大数
- Mosquitto配置文件说明
- linux socket 阻塞非阻塞设置 fcntl,F_GETFL,F_SETFL,flags
- SAP转储订单(STO)
- java学习笔记④MySql数据库--03/04 DQL查询
- android studio 拉取分支,AndroidStudio中使用Git-高级篇(二)——新建分支(branch)和拉取请求(Pull request)...
- Android音视频之AudioRecord录音(一)
- java接口作为参数_java-如何强制将通用类型参数作为接口?
- mysql 位运算 一对多_介绍Mysql位运算简化一对多关系
- vim编辑时遇到E325: ATTENTION Found a swap file by the name ./.backu.sh.swp错误代码的解决办法
- LA 6047Perfect Matching(回文串哈希)
- '_thread._local' object has no attribute 'value'
- MapGuide应用开发系列(11)----创建自己的第一个MapGuide应用程序
- 比例电磁阀(零)液压知识
- 计算机文化基础(高职高专版 第十一版)第六章 答案
- 降了还是涨了?瓶装水市场再秀迷幻操作
- 让Myeclipse10支持Mac OSX – Retina显示屏
- HTML5期末考核大作业,个人网站—— 程序员个人简历模板下载HTML+CSS+JavaScript
- opencv-图像修补,图像修复,inpaint