// ==UserScript== // @name YouTube去广告 // @name:zh-CN YouTube去广告 // @name:zh-TW YouTube去廣告 // @name:zh-HK YouTube去廣告 // @name:zh-MO YouTube去廣告 // @name:ar YouTube AD Blocker // @name:bg YouTube AD Blocker // @name:cs YouTube AD Blocker // @name:da YouTube AD Blocker // @name:de YouTube AD Blocker // @name:el YouTube AD Blocker // @name:eo YouTube AD Blocker // @name:es YouTube AD Blocker // @name:fi YouTube AD Blocker // @name:fr YouTube AD Blocker // @name:fr-CA YouTube AD Blocker // @name:he YouTube AD Blocker // @name:hu YouTube AD Blocker // @name:id YouTube AD Blocker // @name:nb YouTube AD Blocker // @name:nl YouTube AD Blocker // @name:pl YouTube AD Blocker // @name:pt-BR YouTube AD Blocker // @name:ro YouTube AD Blocker // @name:ru YouTube AD Blocker // @name:sk YouTube AD Blocker // @name:sr YouTube AD Blocker // @name:sv YouTube AD Blocker // @name:th YouTube AD Blocker // @name:tr YouTube AD Blocker // @name:uk YouTube AD Blocker // @name:ug YouTube AD Blocker // @name:vi YouTube AD Blocker // @name:it YouTube AD Blocker // @name:ja YouTubeの広告を削除します // @name:kr 포함한 YouTube 광고 차단 // @name:ko 포함한 YouTube 광고 차단 // @namespace http://tampermonkey.net/ // @version 1.40 // @description 这个脚本可以移除所有广告,包括所有视频广告.简单高效的YouTube去广告脚本,拒绝花里胡哨.你可以尝试为常量cssSeletorArr定义元素. // @description:zh-CN 这个脚本可以移除所有广告,包括所有视频广告.简单高效的YouTube去广告脚本,拒绝花里胡哨.你可以尝试为常量cssSeletorArr定义元素. // @description:zh-TW 這個腳本可以移除所有廣告,包括所有視頻廣告.簡單高效的YouTube去廣告腳本,拒絕花裏胡哨.你可以嘗試為常量cssSeletorArr定義元素. // @description:zh-HK 這個腳本可以移除所有廣告,包括所有視頻廣告.簡單高效的YouTube去廣告腳本,拒絕花裏胡哨.你可以嘗試為常量cssSeletorArr定義元素. // @description:zh-MO 這個腳本可以移除所有廣告,包括所有視頻廣告.簡單高效的YouTube去廣告腳本,拒絕花裏胡哨.你可以嘗試為常量cssSeletorArr定義元素. // @description:ar The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:bg The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:cs The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:da The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:de The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:el The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:eo The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:es The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:fi The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:fr The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:fr-CA The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:he The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:hu The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:id The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:nb The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:nl The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:pl The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:pt-BR The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:ro The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:ru The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:sk The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:sr The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:sv The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:th The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:tr The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:uk The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:ug The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:vi The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:it The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:ja The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:kr The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @description:ko The script removes all ads, includes all video ads. Simple and efficient YouTube AD Blocker, no bells and whistles. You can try editing the constant cssSeletorArr. // @author iamfugui // @match *://*.youtube.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=YouTube.com // @grant none // @license MIT // @downloadURL none // ==/UserScript== (function() { `use strict`; //界面广告选择器 const cssSeletorArr = [ `#masthead-ad`,//首页顶部横幅广告. Banner AD at the top of the homepage. `ytd-rich-item-renderer.style-scope.ytd-rich-grid-row #content:has(.ytd-display-ad-renderer)`,//首页视频排版广告. Video layout AD in the homepage. `ytd-rich-section-renderer #dismissible`,//首页中部横幅广告. Banner AD in the middle of the homepage. `.video-ads.ytp-ad-module`,//播放器底部广告. AD at the bottom of the player. `tp-yt-paper-dialog:has(yt-mealbar-promo-renderer)`,//播放页会员促销广告. Member promotion AD on the play page. `#related #player-ads`,//播放页评论区右侧推广广告. Promotion AD on the right side of the play page. `#related ytd-ad-slot-renderer`,//播放页评论区右侧视频排版广告. Video layout AD on the right side of the play page. `ytd-ad-slot-renderer`,//搜索页广告. Search AD. ]; /** * 获取当前url的参数 * @return {String} */ function getUrlParams(param) { // 通过 ? 分割获取后面的参数字符串 let urlStr = location.href.split(`?`)[1] // 创建空对象存储参数 let obj = {}; // 再通过 & 将每一个参数单独分割出来 let paramsArr = urlStr.split(`&`) for(let i = 0,len = paramsArr.length;i < len;i++){ // 再通过 = 将每一个参数分割为 key:value 的形式 let arr = paramsArr[i].split(`=`) obj[arr[0]] = arr[1]; } return obj[param]||``; } /** * 生成去除广告的css元素style并附加到HTML节点上 * @param {String} styles 样式文本 * @param {String} styleId 元素id * @return {undefined} */ function generateRemoveADHTMLElement(styles,styleId) { //如果已经设置过,退出. if (document.getElementById(styleId)) { return false } //设置移除广告样式. let style = document.createElement(`style`);//创建style元素. style.id = styleId; (document.querySelector(`head`) || document.querySelector(`body`)).appendChild(style);//将节点附加到HTML. style.appendChild(document.createTextNode(styles));//附加样式节点到元素节点. console.log(`去除页面广告节点已生成`) } /** * 生成去除广告的css文本 * @param {Array} cssSeletorArr 待设置css选择器数组 * @return {String} */ function generateRemoveADCssText(cssSeletorArr){ cssSeletorArr.forEach((seletor,index)=>{ cssSeletorArr[index]=`${seletor}{display:none!important}`;//遍历并设置样式. }); return cssSeletorArr.join(` `);//拼接成字符串. } /** * 去除播放中的广告 * @return {undefined} */ function removePlayerAD(){ console.log(`去除视频广告脚本执行中...`) let currentTime = parseInt(getUrlParams(`t`))||0;//根据url初始化当前播放时间s let href = `${location.href.split(`&`)[0]}`;//当前视频链接 let timerId =setInterval(function(){ //如果不是播放页就退出,但继续执行定时器,因为YouTube跳转页面时并不会reload页面 let video = document.querySelector(`video`);//这里是故意写在定时器内,load后查询dom太慢 if(!video){ return false; } //拥有跳过按钮的广告. let skipButton = document.querySelector(`.ytp-ad-skip-button`); if(skipButton) { skipButton.click();// 跳过广告. return false;//终止 } //判断用户刚刚是否切换了视频 if(href !== `${location.href.split(`&`)[0]}`){ href = location.href.split(`&`)[0];//当前视频链接 currentTime = parseInt(getUrlParams(`t`))||0;//根据url初始化当前播放时间s console.log(`检测到用户切换了视频,已更新播放进度`) }else{ currentTime = video.currentTime;//未检测到广告,记录播放进度 } //没有跳过按钮的短广告. let shortAdMsg = document.querySelector(`.video-ads.ytp-ad-module .ytp-ad-player-overlay`); if(shortAdMsg){ clearInterval(timerId); let href = `${location.href.split(`&`)[0]}&t=${currentTime}s`; location.href = href;//重新加载. return false;//终止 } }, 16);//主流屏幕刷新率为60hz,此设置与16.666666毫秒每帧对应. } /** * main函数 */ function main(){ console.log(`YouTube去广告脚本正在启动:`) generateRemoveADHTMLElement(generateRemoveADCssText(cssSeletorArr),`removeAD`);//移除界面中的广告. removePlayerAD();//移除播放中的广告. } main(); })();