我必须得说点儿什么了,很(zi)多(ji)人怀疑我是不是断更了(怎么可能,就算没得发了我旧站点存档里的好文章还是可以发出来的),说实话我也是第一次拖更这么久(和以前单站点每天各种水文章截然不同)。

0x00.前言

建站当初这里就是专门搞技术的,所以文章选材很关键(然而总是苦于太简单的文章网上一搜一大堆写出来没有帮助意义,太难的文章我这水平又写不出来,总是处于很是尴尬的地位),文章也尽量简明扼要(专业术语一大堆并且几乎没有一句废话以提高阅读效率,废话都在别的站点说差不多了)。

好在我没有承诺啥时候更新(其实说了也没几个人看),不过更新会有的,只不过是时间的问题而已(的却如此,这个月感觉时间过得特别快,因为学校加了该死的早操,所以晚上最晚零点十五就得在被窝里了,早上六点五十就得出宿舍楼到北操场还好离得近最快三两分钟就能跑到,又因为是夏季午休必须有不然一下午整个人都是懵逼的再惨一点的话脑袋会非常疼),平时空课都占满了(不是补觉就是干活),能数的出来的大块时间只有晚上了(然而这是写作业的时间),周六周日呢(……)?!好吧,怎么感觉我说的都是借口,时间要挤得话还是会有的,不过为了写出来的东西人能看还是找个精力充沛的时候再写吧。

这可能是唯一一次在这里说这么多的废话(关于页都没写这么深),好了我说完了。

接下来那我就从头道来,说一说我做的这个网站吧(新人向,看看就好)

0x01.开工

最早要追溯到宿舍联通线路改造这件事情,关于运营商的负能量部分我就暂且避开不谈之(个人觉着吧谈了也是事倍功半),要把以前的2Mpbs网升级到4Mpbs(说好听点就是翻倍),终于在上个寒假行动了(经历了带宽测试之后,证实设备和网线可以支撑住),于是乎开学的第一个月免费使用且无带宽限制,由于付费用户优先开通所以我这种纯免费用户登陆的时候迟迟显示用户已被暂停(说明已经账户登记上了就是不让你用),这倒难不倒我,当初跟谁(我忘了是谁了)要了一个付费账户就登进去了,再到自助服务页面登录自己的被暂停的账号选择手动开通(必须是登录状态才能进自助服务页面),这样自己的账号就能用了(随手把自己的几个基友和认识的妹纸也给开通了),没记错的话,真正要是等他们给你开通那是一周后的事情吧。

为什么要说这个,因为我是测速狂啊,不限速——我很好奇!当时用的是路由器的无线WiFi,满速每秒十兆(当时是在拿迅雷下Key社的游戏,资源比较稀有都是加速渠道来的没有一个格是来自源站),后来直接插网线缓存b站视频更是达到了几十兆每秒的速度,不过最后仅仅就是感叹了下速度不了了之了。

注:我自己刷的华硕固件的斐讯 K2 路由器有 10M/s 的速度上限

深入则是最近的事情了,三月份的某天晚上在biliplus换成flash版追番(平常我是坚决不会用flash的),那五秒冲满的橙色缓冲条让我觉得有些异样,没经过大脑思考就在一个群里发了句“flash可以突破限速”,随即两个字“幼稚”让我头脑清醒了下来,好在biliplus很友好,跟着链接发现了被302192.168.100.150开头的内网服务器上,接着群里的“缓存”也验证了我的想法,这就是如何发现的缓存服务器的整个过程。

而真正让我想把这件事情公开出去则完全是出于对番剧的喜爱了,正巧刚建设成远哥次元,当时为了偷懒就把302后的链接写到对应番剧的文章末尾,即“内网地址:xxx”(现在想想实在是太不友好了),随即在贴吧发帖公开说明此事。

不过后来发现访问量太少了我这才意识到自己没说明白,于是设想干脆把所有302后的链接(初步设想只管b站的新番)提取出来写到一个页面里。

正巧,自己在读关于Flask的书,后端就决定是你了,托管商这里使用纯静态页面的话很多地方都可以,考虑到后期会有变动,还是选可以支持后端的地方吧,我不会php不能用hostinger所以就剩放在自己的服务器和OpenShift了,考虑到在自己的服务器曾经遇到过很玄学的bug,最终我选择了OpenShift平台(不要和我提heroku,它以DDOS的理由封了我两个账户发邮件也不回我我再也不要你了)

以前看过猪猪侠的微博介绍过一个前端框架——semantic-ui,原文大致意思是和BootStrap相比,就是高富帅和屌丝相比,所以前端框架就选它了,不管是当做练习也好,还是纯属巧合也好,我在最短的时间之内把第一个静态页面写出来了(因为是a标签所以所有的302链接都是手动复制两遍的),后来加上了多说评论框(当时注册到了sut.duoshuo.com很是开心,但是无奈于多说要于2017.6.1停止服务了,晕……)和更新日志页面,除了每天新增新番的链接,更新变动的链接和删除无效的链接之外,再就没有什么大的结构改动了。这个页面现在我还保留着,作为bata的最后一个版本的存档留念。

与此同时,第一个静态页面写好之后,每天更新的有点儿累了,于是想想还是得继续完善啊(后端支撑是早晚的事儿),当然这是每个站点必须经历的,于是继续设想如何全站自动化,白天图书馆继续读Flask那本书,晚上回宿舍复制前端官网的样式,更新并优化着。当然不时地也研究了下这套系统,并且搞了些靠谱的文档(并不确定就是宿舍用的,只是因为比较流行而已)读了一读,文档上的地址都改了,找不到管理页面在哪,所以强行爆破这条路是不通的,更不要谈到系统里面看看了,只能靠想象了

渐渐地思路明确了,但是时候还没到所以原地踏步。终于,在biliplus的更新日志看到了公开api接口,我想,可以上爬虫了。用py先请求接口获取原地址,然后记录下来302headers里面的location,为了准确性,确保开头是192的才记录下来,存到数据库里,这样最基础的也是最重要的核心部分就建设完成了。

剩下的无非就是总览页、番剧页、视频页,用Flask的路由轻松搭建。

总览页用了Vue(还是很容易上手的,最开始接触Vue是那次在b站的直播,那时候我还不懂,只是观众),总览页还是很耗费时间的,因为不懂前端所以有个小的实现问题卡了我两天,后来才想起来问各个群里的大佬,大佬们很及时很耐心地回答了我提出的各种奇葩问题。

番剧页和视频页起初也用了Vue,后来总是因为ajax获取数据的速度慢于渲染的速度导致控制台报错并且数据没到时页面会看到大括号到了的时候还会闪一下,官方解决方法是一段css(这段css我理解错了后来总算是用上了)。再后来发现Flask的渲染JinJa2也能写语句,所以在时间充裕的条件下重写了这两个页面,干脆不用Vue了。总览页由于实现太多所以就没来得及重写,况且重写我的水平不一定能成功,还有,总览页的ajax数据我直接写在页面里了,这样就减少了一次耗时最长的网络请求,本着能用的态度暂时我就不改了。

正好赶上了这学期的网络文化节——网页设计大赛,于是乎连夜把api页面和更新日志页面设计好了,数据中心没来的及所以就是TODO。还好观众不多没有太紧张,但是也有漏讲的(下次一定要打草稿其实这次也打了),至于几2等奖你们就不要关心了嘛,这都不重要(一共就5个人不是计算机就是软件就我一个电子信息的)……

最近遇到了最重要的涉及到站点存亡(闭站跑路)的核心问题,不302了,还好有数据库在,测试已经缓存的视频还能看,证明缓存文件还在,不过不302这意味着缓存服务器完全没有派上用场啊,因为完全不走它啊,不知道是哪里出了问题,所以我把没在列表里的链接用源站直链替代,保证站点视频的可用性,当302恢复时也不会影响到观看。

代码暂时就先不放出来了,不是不给你们看,是我写的代码有些地方自己看都比较困惑,放出来不仅没有用,更会拖累他人……

地址:https://app.yuangezhizao.cn/sut/dormitory/cache/

好像被宿舍网墙了,打开极慢……故放出源站直链(还是慢那就翻墙吧):https://app-yuangezhizao.rhcloud.com/sut/dormitory/cache/

0x02.更新

未完待续……
2017-7-1 20:38:34 更新
还是不能获取新的302地址,估计是废了,但是龙女仆的缓存居然还在(这都几个月了……)
2017-7-28 08:43:09 更新
b 站转码系统发生改动,不产出hdmp4,本站要关业大吉了……