铃心自定义——C9:从网页获取信息&获取接口(2)

说实话,其实这一篇里面说的东西,我也是现学的。
本篇内容过于玄妙,请酌情跳过。

编辑于2020.2.12 转载请注明作者

没有接口的情况下,我们该怎么办?

凉拌

不不不,我要说的当然不是凉拌。当你没有找到一个网页的接口的时候,并不说明我们就回去不到它的信息——相反,几乎所有我们能够看到的都可以获取。

以B站为例,开始进行分析

最近一直在鼓捣B站相关的解析工作,最后有了这篇文章。虽然我知道B站有很多接口,但是出于讲解的目的,我们先当做不知道好了。

首先我随机从主页找了一个视频作为我的实验对象:av88126257

在我们不使用现有接口的情况下,该怎么获得我们想要的东西呢。

首先,我们先尝试性的访问一下,看看返回了些什么。

我们可以看到返回了一堆东西——这些东西就是这个网页的源代码——我们可以直接在网页右键源代码查看到对应的内容。

H T M L

关于HTML的结构我们就不谈了,喜欢研究的朋友们可以自行百度——
这里我们就研究怎么把我们需要的数据提取出来。
老规矩,要么用正则——要么就用万能的取中间。
可能许多人还不知道取中间这个功能,于是实例我就用取中间写吧。

具体的细节我不再叙述,取中间对于那种格式非常复杂的文本有奇效——但是你要确保这个格式是严谨的,一旦格式稍微变动,取中间就会失效。

如果我要获取当前视频正在观看人数呢?

这是一个很有趣的问题,因为我们能够看到页面上显示的正在观看人数,但是从网页源码中却找不到,这是怎么回事呢?

如果使用的浏览器是Chrome内核的(如Google或者360,这些浏览器都是Chrome),当你在某一个网页按下F12,它就会为你打开开发者工具

是不是有内味了

关于具体的细节,大家可以百度抓包或者F12的使用之类的来获取进一步的学习资料,这里我就简单叙述一下我是怎么做的。

在Elements即元素界面查看对应的内容

通过逐级展开,找到数据对应的名称和储存方式。了解对应的分类。
通过名称bilibili-player-video-Info-people-number,我们可以猜测其是属于player的(废话)。

尝试抓包

打开NetWork栏,按下F5刷新网页。
在刷新基本完成的时候,在筛选栏内输入player,筛选出和player(播放器)相关的内容。

通过点击不同的名称,我们可以预览对应传输的数据内容——我们很快就可以注意到一个叫做player.so?id=cid……的内容。
里面记载了很多的信息,其中就包含有一个叫做<online_count>346</online_count>
的内容,很明显就是在线观看人数。

利用超级访问获取信息

右键。Copy link address(复制链接地址)

触发安全风控策略

尝试直接访问,却失效,说明是协议头搞鬼——关于伪造协议头之类的,我这里就不多叙述了,直接阐述通过铃心如何访问。

其中我们可以找到之前所发现的Onlin_Count属性。

解析链接结构,分析内部组成

其中AID就是大家熟悉的AV号,CID则是在AV号之上,进行分类的“真ID”。

你要知道,很多视频是有好几P的,对于好几P的视频,其AV号是相同的,管理起来就不是特别的容易。因此就有了CID,CID即是一个视频对应一个的,真正的视频ID码。

获取CID

重复上文的步骤,我们也可以获得一个api

组合代码,达成我们的目的

后记

其实本来不想讲这些的——因为这些东西我也不熟悉。
从两天前接触,到现在勉强能够用,我觉得我还差了很多很多东西。
上文说的那些接口,其实有些是可以在网络上查询得到的——而不需要自己去一个个看。
不管怎么样,我算是糊弄完了,如果有心的话,想必一定能够实现自己的目标吧!

说实话,伪造协议头那,我还摆弄了挺长时间,后来发现超级访问可以直接获取……

Yorunina

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐