我有一个 Netflix 帐户,我已经在 Google Chrome 中查看了其视频播放器。Netflix 称其视频播放器为 "Cadmium",JavaScript 公开了您可能期望的所有函数和事件处理程序,例如播放、停止、暂停、静音等。我正在构建一个小型的 Chrome 扩展程序,使我可以调用这些 Cadmium 播放器函数,但对我来说困难的是如何创建播放器实例以便我可以开始调用。JavaScript 代码很大、复杂且有些晦涩。一旦我可以创建该播放器的实例,我认为调用函数将变得很容易。
以下是相关的 JavaScript 代码段:
以下是相关的 JavaScript 代码段:
muteOn: function() {
this.savedVolume = this.getVolume(),
this.updateVolumeDisplay(0),
this.scrubber.updatePercent(0),
this.muted = !0,
this.videoPlayer.setMuted(this.muted)
}
在Chrome开发工具中,我可以在该块内设置断点,当我点击Netflix视频播放器上的静音按钮时,执行会命中断点。 Netflix js通过方法重命名进行了大量混淆(并不令人惊讶)。我尝试在调试器中逐步执行代码,并进入了数百个兔子洞,从未能找到通往堆栈顶部的路,以便我可以进行同样的调用(在堆栈顶部),模拟用户单击静音按钮。我还尝试了通过编程方式单击UI播放器上的静音按钮的方法,这同样符合我的需求,但它们有严格的防御机制,让我像陀螺一样旋转。
由于有超过100K行JavaScript代码,我不确定哪些块会与此帖子相关,因此建议您在Chrome中加载Netflix,打开开发工具,播放电影并检查暂停或静音按钮。与这些视频播放器控件交互将带您进入迷宫般的JavaScript,我正试图了解如何将其纳入程序化控制播放器的方面(目前仅从开发工具中进行)。我需要弄清楚的另一件重要事情是如何查询视频播放器以确定正在播放的视频的当前流逝时间。
有任何想法如何解决这个问题吗?(提前感谢!)
video
和剩余时间标签的代码。我编辑了我的答案,这应该修复你上面提到的所有问题。 - pybvideo.currentTime += 10
会导致 Netflix 抛出 "哎呀,出了点问题" 的错误信息。:/ - rebelliardnetflix.cadmium.UiEvents.events.resize[1].scope.events.dragend[1].handler(null, {value: 600, pointerEventData: {playing: false}});
,其中value
是要寻找的播放秒数。 - rebelliard