iqiyi-player-switch

爱奇艺flash播放器与html5播放器随意切换,改善html5播放器播放体验。

< Feedback on iqiyi-player-switch

Question/comment

§
Posted: 2017-06-27
Edited: 2017-06-27

几个问题

1.播放时间长的视频比如奔跑吧,firefox移动鼠标到进度上没有缩略图和时间进度,qq浏览器(chrome53)正常

2.经常出现播放出错,请切换到flash播放器,qq浏览器会发生但要好很多,firefox是重灾区,这个问题很多人都提过,是本脚本的痼疾了,错误信息看起来和另一贴的青红造了个白贴的图很相似,所以我又用firefox 54正式版64位新建profile只装tampermonkey测试,还是经常出现

§
Posted: 2017-06-27

3.无论是qq浏览器还是firefox,新装或升级本脚本时,是不是tampermonkey都会重新下载那4个require的js并更新storage.js?

我在重现第2项时,firefox新建profile怎样都无法使用html5,把旧profile里的storage.js覆盖过来就好了。我猜是不是国外网速慢和gfw的原因使得下载极为困难,有没有其它加快速度的方法,如果很麻烦或是花钱的话那就算了,过了几个小时我又试了firefox新建profile,可能国家良心发现,一打开iqiyi马上就能使用html5了。

gooyieAuthor
§
Posted: 2017-06-29

1. 在firefox上也是有缩略图和时间进度的,只是firefox的元素鼠标作用范围比较小不好触发罢了(youku的进度条很难点中也是如此)。 去测试了edge,edge的元素鼠标作用范围却是和chrome一样,firefox真的是另类啊……

2. qq浏览器播放出错是内核版本低对ReadableStream的实现有问题,这个已经有人提过了→ https://github.com/gooyie/userscript-iqiyi-player-switch/issues/4

至于firefox,不要把问题都归咎于脚本。 青红造了个白的情况是访问了https页面而因混合内容被浏览器block了。而你这情况……你的网络环境…… wscctcdn.inter.qiyi.com是什么鬼?不应该是data.video.iqiyi.com 吗?

E.__url = E.ad ? i : f + "//data.video.iqiyi.com/videos" + i + "&cross-domain=1&qyid=" + o.getJsuid() + "&qypid=" + E.tvId + "_" + a.getSrc(),
E.__params = s.query2Json(E.__url),
E.__filename = s.filename(E.__url),
E.getUrl = function() {
    var e, t = this;
    if (t.ad)
        e = t.__url;
    else if (t.vip) {
        var i = arguments[0] || ""
          , n = l.cmd5x(i + t.__filename);
        i || g.warn(t.vid + ", segment index: " + t.index + ", boss key is empty!"),
        e = t.__url + "&t=" + i + "&vid=" + t.vid + "&ibt=" + n + "&cid=afbe8fd3d73448c9&ib=4&ptime=" + u.getPreviewTime(t.tvId) + "&qypid=" + t.tvId + "_" + a.getSrc() + "&QY00001=" + c.get("QY00001")
    } else
        e = t.__url + "&qypid=" + t.tvId + "_" + a.getSrc();
    return e
}

爱奇艺的代码里没有wscctcdn.inter.qiyi.com,有的只是data.video.iqiyi.com,你知道什么原因了吧?

3. 安装是会下载引用的库的,更新的话只要引用的url没改变应该是不会重新下载的(取决于脚本管理器的实现)。

并不是网速和gfw的锅,至少我没出现这情况。 从日志可以看出引用的库没能成功加载,结合以上情况来看,原因很可能在于你的网络环境……

看来……我还是考虑下直接把引用的库和代码打包到一起好了……

§
Posted: 2017-06-29

2.那个wscctcdn.inter.qiyi.com我认为是正常的,我重装系统、新建profile总能重现问题。我直接去下那几个错误信息里的f4v文件,都能正常下载正常播放,都是同一段视频,播放内容确实和我中断前观看的内容一致。另外我直接打开www.qiyi.com,会自动跳到www.iqiyi.com,应该是爱奇艺为防人错误输入,把qiyi也收入麾下。不过你要是不能下载f4v文件,qiyi.com也不能自动跳转,那我可能得投诉运营商了。

3.去年到今年以来我所在省多次野蛮施工挖断骨干网光纤影响全省甚至邻省的访问国外网速,好几次都有电信员工在网上爆料。不过我出现这个问题不频繁,大部分时间都是正常使用本脚本的

gooyieAuthor
§
Posted: 2017-06-30

2.

wscctcdn.inter.qiyi.com是正常的?


G Suite 工具箱 Dig ns

data.video.iqiyi.com

id 22310
opcode QUERY
rcode NOERROR
flags QR RD RA
;QUESTION
data.video.iqiyi.com. IN NS
;ANSWER
data.video.iqiyi.com. 599 IN CNAME data.video.dns.iqiyi.com.
;AUTHORITY
iqiyi.com. 599 IN SOA ns1.iqiyi.com. dnsadmin.iqiyi.com. 2017063002 1800 600 1209600 600
;ADDITIONAL

wscctcdn.inter.qiyi.com

id 44491
opcode QUERY
rcode NOERROR
flags QR RD RA
;QUESTION
wscctcdn.inter.qiyi.com. IN NS
;ANSWER
wscctcdn.inter.qiyi.com. 599 IN CNAME wscctcdn.inter.iqiyi.com.
wscctcdn.inter.iqiyi.com. 599 IN CNAME wscctcdn.inter.qiyi.com.lxdns.com.
wscctcdn.inter.qiyi.com.lxdns.com. 360 IN CNAME bestvod.ddwscache.ourdvs.com.
;AUTHORITY
ourdvs.com. 55 IN SOA dns1.ourdvs.org. webmaster.ourdvs.com. 1107011041 10800 3600 64800 60
;ADDITIONAL

关于大局域网

https://www.zhihu.com/question/37320282 https://onebitbug.me/2013/12/19/escape-isp-http-hijacking/


能正常下载不一定能正常播放, isp的内网缓存服务器可没有爱奇艺的cdn稳定可靠……

总之,你播放视频出现的这些奇葩问题是内网缓存导致的,不是我能解决的。

§
Posted: 2017-07-26

2.我用的不是小isp,是第一大isp电信ftth。投诉电信,反馈说除了本省电信,还有爱奇艺cdn所在的广东电信,都查了没有劫持。那应该是爱奇艺本身策略,目前发现有4种不同重定向网址,ksctcot.inter.iqiyi.com,wgdcdn.inter.qiyi.com,wscctcdn.inter.qiyi.com,bdcdn.inter.iqiyi.com,后三个是网宿,第一个搞不清是什么。网宿专做cdn的,爱奇艺与其合作很正常。chrome 59和qq浏览器(chrome53)都有以上重定向问题,都能正常播放,而firefox是出错的。不知道是不是类似进度条,chrome和firefox本身的实现不同,或是ReadableStream和Polyfill的实现不同,也可能是脚本本身?附图是chrome重定向但正常播放,qq浏览器和firefox就不贴了,是基本相同的

gooyieAuthor
§
Posted: 2017-07-29

呃,不是data.video.iqiyi.com重定向到wgdcdn.inter.qiyi.com了,而是返回的url…… 一般返回的url是以ip开头的,所以我只让ip开头的url通过fetchStream……

爱奇艺有没有与网宿cdn合作,这个我不知道。 可以把data.video.iqiyi.com请求复制为cURL再把http改成https并加上-v参数,然后看证书是否正确和返回的url是否与http的一致。如果证书正确且返回的url一致,那就不是被劫持而是如你所说的是爱奇艺cdn策略。

gooyieAuthor
§
Posted: 2017-07-29

已更新,应该不会出错了吧。

§
Posted: 2017-07-29

firefox已正常。

附图所示的操作如果符合你所说的,那确实是爱奇艺策略。

爱奇艺为我这里电信安排4个域名+ip大大增加出错概率,每次错误就换个url,连续出错5次就中断,4个域名很容易碰撞。我这里联通安排1个域名+ip,出错更换url连续5次都是域名的可能性很低,所以就没事。

只让ip开头的url通过fetchStream,那chrome规避这个规则是什么原因?

gooyieAuthor
§
Posted: 2017-07-30

嗯,证书CA是Symantec且已通过校验,并没有被劫持,应该就是爱奇艺的cdn策略了。

你上面说了“爱奇艺cdn所在的广东电信”,也就是说,你所在的省份并没有爱奇艺的cdn,只能使用邻近的cdn,所以才会出现这种情况吧。 连续出错5次就中断是播放器的最大重试次数。

chrome用的是原生fetch + ReadableStream,而firefox还未实现ReadableStream,所以才用了 fetchStream 来兼容。我只在firefox上hook了fetch,然后通过请求的url判断是否是视频请求,只让视频请求使用fetchStream,而让其它非视频请求用原生fetch。就是这样。

Post reply

Sign in to post a reply.