0%

听说B站弹幕鬼畜多?我不信

欢迎Star的源码

新入手,小白的我,在我眼里Request爬虫永远只有四大步,不服来辩?

  1. 确定URL,构造请求头
  2. 发送请求,获取响应
  3. 解析响应,获取数据
  4. 保存数据

目标:根据视频BV,获取B站视频弹幕

代码地址如下: 抓包确定URL:

导入:

视频都有一个唯一区分视频:BV号 那么视频的URL规则为:’https://wwww.bilibili.com/video/BV{BVID}’ 找一下弹幕的地址,直接search,即可!如下

由以上抓包可知,弹幕的URL:’https://api.bilibili.com/x/v1/dm/list.so?oid=oid‘, 我们获取到oid那么这一步就完成了 来,回头去找一下oid从何而来呢? 据老夫多年经验指引,他一定在视频URL里面。(其实当时也找了挺久的,甚至逆向那一手,断点调试、调用堆栈等等什么都用出来了。最终还是功夫不负有心人,找到了) 其实回头看,oid是等于video_URL页面里面的cid参数的(验证了Payne式猜想)。过程是难受的

URL,其参数规则也找到了,那么还不就随我为所欲为了。只要拿到视频地址,那不就可以直接拿到弹幕了么。of course!

此处省略3万字(请求,解析,网络原理。。。)

其实当时知道两个方法都去试了,JS那个就不说了,有兴趣的盆友,可以去搞一下 说说这个提取cid参数吧,我用的是正则,这种情况最好是用正则,不过也看个人喜好吧。 可以回头看第二张图,初一乍看我好像不会,啊哈哈~

经过优化后(主要是看了其他视频的那啥之后):写出这个神奇的正则

1
cid = re.findall('.*?cid":+(d{9})+', text)[0] 

谢谢你认真看到了末尾,那我也写点私活吧。欢迎查阅源码与star

1
2
其实关于很多网站(普通)的参数就算是有JS加密,以及混淆。并不代表就一定需要去解密,去逆向。有时候真的只需要serch一下惊喜多多,望诸君切记、切记。
咱们解密,逆向,有时候完全即可做一个动态维持即可。例如我源码中的scrape 拉勾