优酷、AcFun、bilibili 的 HTTPS 播放器


(神楽坂玲奈) #1

我站是全站 https 的,discourse 也推荐大多数人这么做,然而有个现实问题是,大部分中国的视频服务默认播放器地址只提供了 http 的。

经过一些研究,发现了优酷、acfun、bilibili 的 https 播放器,其他视频站我这里没有需求未做研究。随手做一下记录,以供插件开发者参考。

优酷

优酷的 https 播放器是在 https://players.youku.com 域下,参数与原本的相同,示例:
https://players.youku.com/player.php/sid/XMTQ4NDIxMDc1Mg==/v.swf
这个 API 的来源是优酷视频云的开发者工具,播放器代码生成时勾选 SSL,调用的即为这个播放器。算是官方认可的 API,推荐 @fantasticfears 添加到默认 Onebox 支持。

bilibili

Bilibili的 https 播放器是在 https://static-s.bilibili.com 域下,参数与原本的相同,示例:
https://static-s.bilibili.com/miniloader.swf?aid=4011183&page=1
这个 API 纯粹是 hack 出来的,使用审查元素跟踪网页加载的资源发现有加载 static-s.bilibili.com 下的静态资源,于是就照着原本的路径敲了一下发现是存在的。未发现官方有在使用这个 API 的迹象。

Acfun

Acfun 的情形较为复杂,网站上使用的播放器本身即为 https 的,但是需要的参数无法从页面地址直接推断,需要另外进行请求。而对外分享用的 flash 地址没找到有 https 的。
主站上是先用iframe 加载一个https 的页面,示例:

https://ssl.acfun.tv/block-player-homura.html?salt=168650321&forFlash_=fc7fd795-ec61-4092-8955-c60ba0643a95,s106,ac2573720,#token=tiwo4s76b3z69a4i;vid=3242090;postMessage=1;autoplay=0;fullscreen=0;from=http://www.acfun.tv;hint=小贴士:播放器会自动记录你的每一次操作。

通过进一步分析这个页面发现其 flash

<object type="application/x-shockwave-flash" allowfullscreeninteractive="true" allowfullscreen="true" allowscriptaccess="always" data="flash/player-view-homura.swf?salt=1433413523775" width="1726" height="985" id="ACFlashPlayer-re" style="visibility: visible;"><param name="allowFullscreenInteractive" value="true"><param name="allowfullscreen" value="true"><param name="allowscriptaccess" value="always"><param name="flashvars" value="vid=3242090&amp;videoId=3242090&amp;width=1726&amp;height=985&amp;fs=0&amp;autoplay=0&amp;host=http://www.acfun.tv&amp;avatar=&amp;hint=小贴士:播放器会自动记录你的每一次操作。&amp;oldcs=1&amp;allowFullscreenInteractive=true&amp;allowfullscreen=true&amp;allowscriptaccess=always"></object>

经测试直接将 flashvars 作为 url 参数贴过来也是可以的,示例:
https://ssl.acfun.tv/flash/player-view-homura.swf?salt=1433413523775&vid=3242090&videoId=3242090&width=1726&height=985&fs=0&autoplay=0&host=http://www.acfun.tv&avatar=&hint=小贴士:播放器会自动记录你的每一次操作。&oldcs=1&allowFullscreenInteractive=true&allowfullscreen=true&allowscriptaccess=always
其中部分参数可以省略,但是 vid 总归是要有的,这个 vid 需要发请求来获取。


(Erick Guan) #2

看起来这个很不错。我原来还用了私有的稳定了几年的 API 来抓封面图片,但是之后优酷又禁掉了,特别麻烦。


优酷视频在 https 站点无法默认打开
(Erick Guan) #3

优酷已经 fix 了,后面私有 API 我就不提到上游了,找个时间塞插件里。不过既然是私有的,你还有那种封面图片的 API 么?Onebox 的视频可以先显示图片,点击后再展开播放器。有封面图片就可以不要等半天 embed 加载了


(Patrick) #4

具体怎么用? 需要升级到1.5吗?


(Erick Guan) #5

要升级到新版本。包括但不限于 1.5 正式版。以及特性包含在 Discourse 中,不需要特别设置。


(Erick Guan) #6

这里面肯定有个东西是 nouce…没参数没法载入(实验结果)

bilibili 已经加入本地化插件了。


(Xhb) #7

在最新版本的discourse master 分支中,acfunc 和 bilibili 已经失效了,请楼主有空修复一下。。。谢谢。。。


(Erick Guan) #8

acfun 没有做支持。bilibili 要是换 API 就没办法了


(Simon Joel) #9

你好@fantasticfears 我的bilibili还有LETV也是,虽然可以onebox但是显示都是这种条形的,有没有办法设置它的长宽比例,弄成像youtube那样的效果。谢谢


(Simon Joel) #10

自己摸索一下只要在贴链接时候前面加一行空行就行,

然后问题又来了,在预览那里是好了,但是到了发布之后,帖子又变成条形的了。


(yrxwin) #11

同问,不知道B站怎么样才能修改长宽呢? 忧伤


(雪莱鸟) #12

看到B站的,我觉得也不算是hack出来的,应该是B站提供的H5页面