python - bilibili(三)wireshark分析

时间:2023-02-05 23:47:51

当我们开始打开浏览器,并进入B站直播网页前,我们打开wireshark软件(软件的下载与安装请百度一下)开始截取当前数据。

然后输入直播间网址,enter进入就可以停止截取数据了,然后我们分析所截取的这段数据。

python - bilibili(三)wireshark分析

GET请求 如果你的数据过多请这样过滤:

python - bilibili(三)wireshark分析

这样 你的http网址请求就很快筛选出来了。右键跟踪流发现这个请求得到的是源代码。

python - bilibili(三)wireshark分析

这段源代码对于我们来说是没有意义的。我们使用urlopen就可以打开这样的源码。

接着,我们继续往下翻,发现浏览器接着又来了个GET请求了

python - bilibili(三)wireshark分析

同样我们追踪这个流发现服务器端给我们发来了两个有意义的通讯

python - bilibili(三)wireshark分析

python - bilibili(三)wireshark分析

从上图我们可以得知 :

<state>PREPARING</state>中的PREPARING是直播状态,翻译过来就是准备中,通俗来讲就是没有直播。

<chatid>98284</chatid> 中的98284是房间的真实ID,房间180进入和98284进入的房间页面是一毛一样的。

<server>livecmt-2.bilibili.com</server>中的livecmt-2.bilibili.com就是服务器地址啦。

<dm_port>788</dm_port>中的788看名字就知道是弹幕端口,也就是服务器的端口是788。

<dm_server>broadcastlv.chat.bilibili.com</dm_server>看取名字是弹幕服务器,有兴趣的朋友可以试试链接这个域名是否可以得到弹幕。

<dm_ws_port>7170</dm_ws_port>

<dm_wss_port>7172</dm_wss_port>这两个端口不明白ws和wss意思,也就没有使用这两个端口。

既然我们知道了服务器的端口那我们可以设置wireshark的过滤规则了。

python - bilibili(三)wireshark分析

info里面的内容你可以理解为[SYN]为拜拜,[ACK]为应答,[PSH] 为传输数据。其中涉及到三次握手和四次挥手的知识,请自行百度了解。

python - bilibili(三)wireshark分析

同样是追踪流,红色底纹代表我们发送的,蓝色底纹代表我们接受到的。换句话说,客户端给服务端一个请求,服务端给客户端一个或者多个回应。

上图可以看出,客户端发送了一段数据,服务端也回了一段数据,后面还有一段开头cmd的数据,这段数据正好就是我们所需要的弹幕数据。由此可见,只要我们向服务端发送一段正确的指令就可以得到弹幕了,是不是很简单?

其实,并不是,我所上的图都是我自己编译的客户端所传输的数据,而浏览器中的数据更加复杂,你要分析的更多,最关键的一点是你根本就不知道那段数据是弹幕,因为你所截取的数据全部是乱码。何为乱码,如下图:

python - bilibili(三)wireshark分析

这些乱码是弹幕无疑,然而你怎么去破解呢?如何让收到的弹幕是正常你能解析的呢?

下一篇来解决这个问题。

python - bilibili(三)wireshark分析的更多相关文章

  1. python - bilibili(二)出错的解决办法

    在获取房间号之前我们先解决上篇文章遗留的bug,即输入的房间号不是数字和对应的房间号不存在而产生的问题. 输入的房间号不是数字: 在python中,你所输入的必定是字符串,虽然你输入的是数字,但是类型 ...

  2. python - bilibili(四)抓包数据乱码

    上一篇文章中不知道大家发现端倪木有,两张照片对比很明显发现第一张是信息很明显的,第二张是乱码的. 为什么会出现这种情况?细心的童鞋可能发现是我们发送给服务器的请求连接的数据不同: 第一张图的信息是{& ...

  3. Wireshark分析非标准端口号流量

    Wireshark分析非标准端口号流量 2.2.2  分析非标准端口号流量Wireshark分析非标准端口号流量 应用程序运行使用非标准端口号总是网络分析专家最关注的.关注该应用程序是否有意涉及使用非 ...

  4. 常用排序算法的python实现和性能分析

    常用排序算法的python实现和性能分析 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试 ...

  5. python的引用计数分析(二)

    python所有对象引用计数被减少1的情况: 一.对象的别名被赋予新的对象; a = 23345455 # 增加了一个引用 b = a # 增加了一个引用 print(sys.getrefcount( ...

  6. python的计数引用分析(一)

    python的垃圾回收采用的是引用计数机制为主和分代回收机制为辅的结合机制,当对象的引用计数变为0时,对象将被销毁,除了解释器默认创建的对象外.(默认对象的引用计数永远不会变成0) 所有的计数引用+1 ...

  7. 【转】python之random模块分析(一)

    [转]python之random模块分析(一) random是python产生伪随机数的模块,随机种子默认为系统时钟.下面分析模块中的方法: 1.random.randint(start,stop): ...

  8. Python进阶&lpar;三十五&rpar;-Fiddler命令行和HTTP断点调试

    Python进阶(三十五)-Fiddler命令行和HTTP断点调试 一. Fiddler内置命令   上一节(使用Fiddler进行抓包分析)中,介绍到,在web session(与我们通常所说的se ...

  9. python slots源码分析

    上次总结Python3的字典实现后的某一天,突然开窍Python的__slots__的实现应该也是类似,于是翻了翻CPython的源码,果然如此! 关于在自定义类里面添加__slots__的效果,网上 ...

  10. 孤荷凌寒自学python第三十九天python 的线程锁Lock

    孤荷凌寒自学python第三十九天python的线程锁Lock (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 当多个线程同时操作一个文件等需要同时操作某一对象的情况发生时,很有可能发生冲突, ...

随机推荐

  1. css记录

    padding padding-top是在绿色边框内,从顶部向下移20像素位置,默认padding-top 为0时,红色边框为20像素高,通过padding-top属性,为顶部增加了20像素,这时顶部 ...

  2. noip2013 积木大赛

    题目描述 春春幼儿园举办了一年一度的“积木大赛”.今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是hi. 在搭建开始之前,没有任何积木(可以看成 ...

  3. CentOS的SSH&comma;Putty配置说明

    基本资源: CentOS5.5 (32位) , Mysql6.0 ,Putty ,SSH   Step: 1.VMWare中装好CentOS    A. 可能存在ifconfig等命令无法正常识别) ...

  4. linux 通过哪个命令可以查看某个服务及其端口、进程号

    netstat/lsof netstat命令用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况 -a 显示一个所有的有效连接信息列表(包括已建立的连接,也 ...

  5. 下载编译和测试Android 源代码

    http://source.android.com/source/downloading.html 其中出现错误 repo: fatal: error unknown url type: https ...

  6. jQuery实战读书笔记(备忘录)

    选择器备忘: | :even 匹配所有索引值为偶数的元素,从 0 开始计数 :odd 匹配所有索引值为奇数的元素,从 0 开始计数 实例——设置table交替行变色: <script type= ...

  7. Java学习笔记(七):内部类、静态类和泛型

    内部类 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来说包括这四种:成员内部类.局部内部类.匿名内部类和静态内部类.下面就先来了解一下这四种 ...

  8. GIF文件转换为头文件工具

    目的: GIF文件转为头文件 举例: 用UE打开GIF文件,如下图所示:图1 test.gif文件将上面文件内容转化为头文件,放到一个数组里面,内容如下:图2 test.h文件 思路: 从上面可知,将 ...

  9. android studio 程序错误

    一.错误类型: com.android.tools.fd.runtime.BootstrapApplication cannot be cast to 成功修改方式 File --> Setti ...

  10. mysql&plus;mybatis递归调用

    递归调用的应用场景常常出现在多级嵌套的情况,比如树形的菜单.下面通过一个简单的例子来实现mysql+mybatis的递归. 数据模型 private Integer categoryId; priva ...