目录

第一节 准备工作

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下载微信小程序里的视频【图文教程】相关推荐

  1. 教你下载微信小程序里的视频

    目录 利用 Fiddler (http抓包工具) IDM 油猴脚本下载 利用 Fiddler (http抓包工具) 在电脑上打开了小程序的视频,但是我们现在还是不能获取到视频的url地址,这里就需要用 ...

  2. 通过wireshark下载微信小程序视频一例

    一.准备 wireshark   下载地址[https://www.wireshark.org/download.html] 微信 windows版 二.打开wireshark 打开wireshark ...

  3. 下载微信小程序中的视频

    工具准备: Fiddler 我这里用的5.0的版本.(这个用来抓取视频下载地址) Internet Download Manager(idm)版本6.37(这个用来下载视频) 步骤: 打开Fiddle ...

  4. 教你如何用手机下载视频号[微信小程序]中的视频

    ** 如何下载微信视频号**[微信小程序]**中的视频 ** 事情是这样的,因为近期所在工作单位要迎接检查,老板发了几个小程序视频给我,需要我把他下下来,我最初找了一下,并不能够找到下载按钮,就打算改 ...

  5. 微信小程序里的block

    1 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性. 2 因为wx:if是一个控制属性,需要将它添加到一个标签上.如果要一次性判断多个组件标签,可以使用 标签将多个组件包 ...

  6. 微信小程序上传图片到html,在微信小程序里上传图片

    在微信小程序里上传图片. 上传图片 JS//index.js Page({ data:{ tempFilePaths:[], uploadLinks:[], }, uploadImg() { var  ...

  7. 微信小程序开发导航:精品教程+网友观点+demo源码(5月9日更新)

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...

  8. 使用Filler4提取微信小程序中的视频

    因为需要做防范电信网络诈骗的宣传,但是相关视频网站的内容都不适合宣传使用,最后在微信小程序搜索到一些合适的内容,但是微信小程序的视频不能直接下载,就考虑通过获得文件地址直接下载. 1.机器环境 系统: ...

  9. 视频教程-微信小程序快速入门视频课程-微信开发

    微信小程序快速入门视频课程 北京八维研修学院技术工程师,5年大型项目实战开发经验,3年授课经验. 孟宪杰 ¥168.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 AP ...

  10. 【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)

    可在系列教程的基础上继续开发,也可以单独使用 [微信小程序-原生开发]系列教程 效果预览 代码实现 点击触发生成海报 在活动详情页,指定点击某图标/按钮,触发跳转到生成海报的页面 pages\comp ...

最新文章

  1. php多表存储,php – MySql在一个单元格中存储另一个表的多个引用并选择它?
  2. leetcode 179. 最大数
  3. Mosquitto配置文件说明
  4. linux socket 阻塞非阻塞设置 fcntl,F_GETFL,F_SETFL,flags
  5. SAP转储订单(STO)
  6. java学习笔记④MySql数据库--03/04 DQL查询
  7. android studio 拉取分支,AndroidStudio中使用Git-高级篇(二)——新建分支(branch)和拉取请求(Pull request)...
  8. Android音视频之AudioRecord录音(一)
  9. java接口作为参数_java-如何强制将通用类型参数作为接口?
  10. mysql 位运算 一对多_介绍Mysql位运算简化一对多关系
  11. vim编辑时遇到E325: ATTENTION Found a swap file by the name ./.backu.sh.swp错误代码的解决办法
  12. LA 6047Perfect Matching(回文串哈希)
  13. '_thread._local' object has no attribute 'value'
  14. MapGuide应用开发系列(11)----创建自己的第一个MapGuide应用程序
  15. 比例电磁阀(零)液压知识
  16. 计算机文化基础(高职高专版 第十一版)第六章 答案
  17. 降了还是涨了?瓶装水市场再秀迷幻操作
  18. 让Myeclipse10支持Mac OSX – Retina显示屏
  19. HTML5期末考核大作业,个人网站—— 程序员个人简历模板下载HTML+CSS+JavaScript
  20. opencv-图像修补,图像修复,inpaint

热门文章

  1. 基于eclipse和hiber的pojo、数据库表与mapping的相互转换
  2. /proc/self/目录的意义
  3. WLAN按钮不见了或者网络适配器不见了导致上不了网
  4. kafka-生产者使用
  5. speedoffice表格中如何换行
  6. 如何撰写《软件项目方案文档》
  7. 用Python求解拿鸡蛋问题
  8. linux没有cpufreq目录,linux cpufreq framework(1)_概述
  9. leach协议c++代码_leach协议.doc
  10. 作业3 跟踪分析Linux内核的启动过程