前言

如果大家像我一样经常在线找番的话,肯定对 dilidili樱花动漫 这样的视频站有所耳闻,虽然越做越大的B站已经快消灭了这些野生盗版站的生存空间,但他们还是能凭小众番剧和免费资源求得一席之地。当然了,由于仿站众多,我也不能确定我放的这两个链接就是我以前常去的真站。

其实我自己本来也有用苹果cms做视频站,但是动漫番剧的资源并不多,而且由于视频源是由一些开在线赌场的资源贩子录制的,所以总会有滚动横幅和右下角资源广告,速度也不怎么快。

这两个(或是说这一类)动漫站就不一样了,大量使用贴吧、QQ社区之类的外链(如:gss3.baidu.com),不但没有广告,而且速度飞快,也许这就是二次元的用爱发电吧。

这些外链不检测防盗链,谁都可以引用,但是这样也带来了一个问题,你辛辛苦苦上传的视频,可能被对手站直接就搞了过去,你的SEO还不一定搞得过他,到头来还是为他人作嫁衣裳。

而且这些比较大的动漫站之间也会相互采集,比如你偶尔会在 嘀哩嘀哩 看到 樱花动漫 的视频水印。

查看每个网站播放链接的方式都不同,我也不会在这里放完整的源码,没兴趣的人看到这里就可以点关闭了,有兴趣的人全当看个思路。

苹果cms入库

先看一下站外入库要 post 哪些数据,然后我们才知道具体要采集什么参数。

苹果cms的站外入库规则可以看这里:MacCMS 10.x 火车头发布模块教程

但是上面写的也不完全对,比如我的别名一直 post 失败。想要看具体的规则的话,请查看 这个入库规则 ,解压后是 wpm 格式(web publish module),请用火车头采集器打开。

反正我最后用的参数也就只有那么几个:

form_data = {
    'pass': 入库免登陆密码(字符串), 
    'type_id': 类型(分类ID),
    'vod_status': 是否可见(0/1),
    'vod_isend': 是否完结(0/1),
    'vod_name': 视频名称(字符串),
    'vod_serial': 剧集数量,
    'vod_pubdate': 首播时间(字符串),
    'vod_year': 年代(字符串),
    'vod_area': 地区(字符串),
    'vod_pic': 图片链接(字符串),
    'vod_blurb': 简介(字符串),
    'vod_play_from': 播放器(字符串),
    'vod_play_url': 播放链接(带格式的字符串),
    }

你只需要在苹果cms的后台——系统设置——站外入库设置里面启用站外入库,然后设定入库密码,再向 “你的域名/api.php/receive/vod” post 上面的 form_data,就会成功添加视频了。

采集资源

我们再分析一下上面的 form_data,'pass' 和 'vod_status' 根本就不需要采集,而其他的也很容易得到,主要问题就只是如何去获取 'vod_play_from'(播放器)和 'vod_play_url' 播放链接而已,而播放器只是一个特定的字符串,完全可以后期调整,所以要解决的问题就只剩下播放链接。

1. 全网适用的方法

虽然各个(野生)视频站的源码、排版、数据库查询方式各不相同,但他们都有一个共同点,就是不会使用自己的服务器和流量去给你服务,而是调用各大资源平台的资源,虽然有些网站是自己搞的外链,但也需要iframe内嵌的播放器。

比如我在嘀哩嘀哩播放《Re:从零开始的异世界生活》,然后通过 Chrome 调试模式看网页元素,就会轻易发现一行代码:

<iframe class="embed-responsive-item" allowfullscreen="" src="/static/ck/index.html?url=https%3A%2F%2Fgss3.baidu.com%2F6LZ0ej3k1Qd3ote6lo7D0j9wehsv%2Ftieba-smallvideo-transcode-crf%2F3037329_a178b193f3e6cf1ae30729af6ead20e1_0.mp4&t=mp4"></iframe>

很显然 https://gss3.baidu.com/6LZ0ej3k1Qd3ote6lo7D0j9wehsv/tieba-smallvideo-transcode-crf/3037329_a178b193f3e6cf1ae30729af6ead20e1_0.mp4 就是原视频的链接。

如果你像我一样使用 python 的话,可以使用浏览器模拟神器 selenium 去加载网页,然后返回 iframe 的 src,涂涂改改就可以获得播放链接咯。

2.网站特异的方法

Selenium 可以全网通用,但不可避免会带来性能瓶颈,我的 t5 实例曾经因为跑调用 Selenium 的爬虫而频频被举报;并且由于性能效率低,Selenium 的爬取速度也很慢,给自己的设备和对方的服务器都带来了不必要的开销。

所以避免使用 Selenium 还是蛮有必要的!但是这样就得去寻找各个网站查询数据的规律了。

再以嘀哩嘀哩为例,用 Chrome 浏览器的右键菜单 “检查” 《Re:从零开始的异世界生活》线路4的第一集,我们可以看到下列代码:

<li class="xx-episode col-xl-2 col-lg-4 col-md-4 col-sm-6 col-6 p-2 position-relative play-btn" play_id="34926" play_cfg="mp4" ep_name="EP1" tab_idx="4" speed_tag="fast">
	<a href="#play_id_34926" class="stretched-link small"> 
	<div class="text-truncate">第01集</div> </a> 
	<div class="speed_tag text-info">流畅</div> 
</li>