网安引领时代,弥天点亮未来
1.讲故事要讲完整:白嫖腾讯vip视频浏览器实用小插件分享
2.简单概括就是替换接口和播放器。
3.具体配置如下,就不细说了,自行查看官方文档即可。
{
"content_scripts": [ {
"js": [ "custom.js" ],
"matches": [ "https://v.qq.com/x/*", "https://www.iqiyi.com/v_*", "https://v.youku.com/v_show/*" ],
"run_at": "document_end"
} ],
"description": "vip视频解析插件,目前支持:腾讯视频、优酷视频、爱奇艺视频 by:奥村燐",
"key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp1MyWGlytSRmCg/1uwac+gvY5y+gdKunzleHMWO/rqcdvSS7HrYOnAdm9itJNGFdlnhLMsdVQROj5q7SWI1DaRx6RHpYj97GTa8hPzY4pv+icC2aCyg/DeRx2TAighf+CL/av+OqhAbrePD+H03/Uigx7cfvafaGO8k+C5RIkOH7kGu2kPiO9ylI1jVDzWp7HQEAix8o3I6TD/ZJhKUZ0w6XRog0uh/IHtUwqVe+rXxkka7ri+/MA6qct6XcSkP3bAtfmFlzj+WOWKJKrnXKNxcsSYU3bRJYGWgdz3qgNzQQIZMYDN5zJeVIaMhXC3De4KWjix8HfbJbHnda0d/rBwIDAQAB",
"manifest_version": 2,
"name": "vip视频解析插件",
"permissions": [ "tabs" ],
"version": "1.0.0"
}
4.插件代码如下。
//腾讯视频
if (window.location.href.indexOf("//v.qq.com/x/") != -1) {
var play_url = window.location.href
setTimeout("tencent_close_adv()",3000)
}
function tencent_close_adv() {
if(play_url== window.location.href){
document.querySelectorAll(".player__wrapper.container-player")[0].innerHTML='<iframe src="https://jx.aidouer.net/?url=' + play_url + '" height="100%" width="100%" scrolling="no" allowfullscreen="" frameborder="0"></iframe>'
}else if(window.location.href.indexOf(play_url.replace(".html",""))!=-1 && play_url!= window.location.href){
play_url = window.location.href
document.querySelectorAll(".player__wrapper.container-player")[0].innerHTML='<iframe src="https://jx.aidouer.net/?url=' + play_url + '" height="100%" width="100%" scrolling="no" allowfullscreen="" frameborder="0"></iframe>'
}
setInterval("tencent_play_start()", 1000)
}
function tencent_play_start() {
if (play_url!= window.location.href) {
window.location.reload()
}
}
//爱奇艺视频
if (window.location.href.indexOf("iqiyi.com/v_") != -1) {
var play_url = window.location.href
setTimeout("iqiyi_close_adv()",3000)
}
function iqiyi_close_adv() {
document.getElementById("flashbox").innerHTML='<iframe src="https://jx.aidouer.net/?url=' + play_url + '" height="100%" width="100%" scrolling="no" allowfullscreen="" frameborder="0"></iframe>'
setInterval("iqiyi_play_start()", 1000)
}
function iqiyi_play_start() {
if (play_url!= window.location.href) {
window.location.reload()
}
}
//优酷视频
if (window.location.href.indexOf("youku.com/v_show/") != -1) {
var play_url = window.location.href
setTimeout("youku_close_adv()",3000)
}
function youku_close_adv() {
document.getElementById("player").innerHTML='<iframe src="https://jx.aidouer.net/?url=' + play_url + '" height="100%" width="100%" scrolling="no" allowfullscreen="" frameborder="0"></iframe>'
setInterval("youku_play_start()", 1000)
}
function youku_play_start() {
if (play_url!= window.location.href) {
window.location.reload()
}
}
5.代码的里面的
window.location.href.indexOf("//v.qq.com/x/") != -1
是为了区分当前打开的url在哪个页面,有的人肯定会问了,不是配置了content_scripts可执行了页面吗?为啥还要自己去判断?因为可执行的范围配置的太广了,为了让插件代码精确到对应页面执行,自己也要判断一遍。
6.获取当前的url赋值到paly_url,之后再执行setTimeout,这个是必须的。
7.主要是过早的替换视频,Dom节点并没有加载完全,导致会出现视频更换了,音频还是播放原来的,有的人又会问了,不是有window.onload,可以Html文档渲染完成后执行,但是呢,有些Dom节点是后期通过JavaScript渲染的,window.onload是无效的,所以setTimeout("tencent_close_adv()",3000),目的是延迟3秒,等待视频播放的Dom节点全部加载完成。
8.后面的if判断主要是为了判断不同的来源页面然后替换播放器,第一次获取url和第二次一样的时候,不做任何处理,直接替换播放器。
if(play_url== window.location.href){
document.querySelectorAll(".player__wrapper.container-player")[0].innerHTML='<iframe src="https://jx.aidouer.net/?url=' + play_url + '" height="100%" width="100%" scrolling="no" allowfullscreen="" frameborder="0"></iframe>'
}else if(window.location.href.indexOf(play_url.replace(".html",""))!=-1 && play_url!= window.location.href){
play_url = window.location.href
document.querySelectorAll(".player__wrapper.container-player")[0].innerHTML='<iframe src="https://jx.aidouer.net/?url=' + play_url + '" height="100%" width="100%" scrolling="no" allowfullscreen="" frameborder="0"></iframe>'
}
9.如果发现第一次获取url和第二次不一样的时候,play_url重新赋值换成新的,再替换播放器,比如这种视频,会把url重写,但是并不会刷新页面,所以会出现获取的第一次和第二次不一样的情况,但是上一级的id是一样的。
10.最后循环监控url变更并且刷新页面,理由就是,前面刚刚说了,已经更改了原视频dom节点,原本的集数点击视频播放已经失效了,只有音频在播放,腾讯视频重写了url但是不重新加载页面,所以刷新当前页面重新加载插件代码。
setInterval("tencent_play_start()", 1000)
}
function tencent_play_start() {
if (play_url!= window.location.href) {
window.location.reload()
}
}
11.欢迎大家关注弥天安全实验室公众号。
知识分享完了
喜欢别忘了关注我们哦~
学海浩茫,
弥 天
安全实验室
原文始发于微信公众号(弥天安全实验室):白嫖腾讯视频vip插件代码开发过程详解
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论