可以直接点我来安装加速脚本

1.搞油猴扩展

在扩展里面搜索Tampermonkey(油猴)并获取


搜索Tampermonkey并获取

2.添加新脚本

将代码全部替换为下面代码并CTRL+S保存

// ==UserScript==
// @name        计时器掌控者|视频广告跳过|视频广告加速器
// @name:en      TimerHooker
// @name:zh-CN   计时器掌控者|视频广告跳过|视频广告加速器
// @namespace    https://gitee.com/HGJing/everthing-hook/
// @version      1.0.51
// @description       控制网页计时器速度|加速跳过页面计时广告|视频快进(慢放)|跳过广告|支持几乎所有网页.
// @description:en  it can hook the timer speed to change.
// @description:zh-CN  控制网页计时器速度|加速跳过页面计时广告|跳过广告|支持几乎所有网页.
// @include      *
// @require      https://greasyfork.org/scripts/372672-everything-hook/code/Everything-Hook.js?version=784972
// @author       Cangshi
// @match        http://*/*
// @run-at       document-start
// @grant        none
// @license      GPL-3.0-or-later
// ==/UserScript==
/*** ---------------------------* Time: 2017/11/20 19:28.* Author: Cangshi* View: http://palerock.cn* ---------------------------*/
window.isDOMLoaded = false;
window.isDOMRendered = false;document.addEventListener('readystatechange', function () {if (document.readyState === "interactive" || document.readyState === "complete") {window.isDOMLoaded = true;}
});~function (global) {var workerURLs = [];var extraElements = [];var helper = function (eHookContext, timerContext, util) {return {applyUI: function () {var style = '._th-container ._th-item{margin-bottom:3px;position:relative;width:0;height:0;cursor:pointer;opacity:.3;background-color:aquamarine;border-radius:100%;text-align:center;line-height:30px;-webkit-transition:all .35s;-o-transition:all .35s;transition:all .35s;right:30px}._th-container ._th-item,._th-container ._th-click-hover,._th_cover-all-show-times ._th_times{-webkit-box-shadow:-3px 4px 12px -5px black;box-shadow:-3px 4px 12px -5px black}._th-container:hover ._th-item._item-x2{margin-left:18px;width:40px;height:40px;line-height:40px}._th-container:hover ._th-item._item-x-2{margin-left:17px;width:38px;height:38px;line-height:38px}._th-container:hover ._th-item._item-xx2{width:36px;height:36px;margin-left:16px;line-height:36px}._th-container:hover ._th-item._item-xx-2{width:32px;height:32px;line-height:32px;margin-left:14px}._th-container:hover ._th-item._item-reset{width:30px;line-height:30px;height:30px;margin-left:10px}._th-click-hover{position:relative;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;height:45px;width:45px;cursor:pointer;opacity:.3;border-radius:100%;background-color:aquamarine;text-align:center;line-height:45px;right:0}._th-container:hover{left:-5px}._th-container{font-size:12px;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;left:-35px;top:20%;position:fixed;-webkit-box-sizing:border-box;box-sizing:border-box;z-index:100000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}._th-container ._th-item:hover{opacity:.8;background-color:#5fb492;color:aliceblue}._th-container ._th-item:active{opacity:.9;background-color:#1b3a26;color:aliceblue}._th-container:hover ._th-click-hover{opacity:.8}._th-container:hover ._th-item{opacity:.6;right:0}._th-container ._th-click-hover:hover{opacity:.8;background-color:#5fb492;color:aliceblue}._th_cover-all-show-times{position:fixed;top:0;right:0;width:100%;height:100%;z-index:99999;opacity:1;font-weight:900;font-size:30px;color:#4f4f4f;background-color:rgba(0,0,0,0.1)}._th_cover-all-show-times._th_hidden{z-index:-99999;opacity:0;-webkit-transition:1s all;-o-transition:1s all;transition:1s all}._th_cover-all-show-times ._th_times{width:300px;height:300px;border-radius:50%;background-color:rgba(127,255,212,0.51);text-align:center;line-height:300px;position:absolute;top:50%;right:50%;margin-top:-150px;margin-right:-150px}';var displayNum = (1 / timerContext._percentage).toFixed(2);// 在页面左边添加一个半圆便于修改var html = '<div class="_th-container">\n' +'    <div class="_th-click-hover _item-input">\n' +'        x' + displayNum + '\n' +'    </div>\n' +'    <div class="_th-item _item-x2">&gt;</div>\n' +'    <div class="_th-item _item-x-2">&lt;</div>\n' +'    <div class="_th-item _item-xx2">&gt;&gt;</div>\n' +'    <div class="_th-item _item-xx-2">&lt;&lt;</div>\n' +'    <div class="_th-item _item-reset">O</div>\n' +'</div>\n' +'<div class="_th_cover-all-show-times _th_hidden">\n' +'    <div class="_th_times">x' + displayNum + '</div>\n' +'</div>' +'';var stylenode = document.createElement('style');stylenode.setAttribute("type", "text/css");if (stylenode.styleSheet) {// IEstylenode.styleSheet.cssText = style;} else {// w3cvar cssText = document.createTextNode(style);stylenode.appendChild(cssText);}var node = document.createElement('div');node.innerHTML = html;var clickMapper = {'_item-input': function () {changeTime();},'_item-x2': function () {changeTime(2, 0, true);},'_item-x-2': function () {changeTime(-2, 0, true);},'_item-xx2': function () {changeTime(0, 2);},'_item-xx-2': function () {changeTime(0, -2);},'_item-reset': function () {changeTime(0, 0, false, true);}};Object.keys(clickMapper).forEach(function (className) {var exec = clickMapper[className];var targetEle = node.getElementsByClassName(className)[0];if (targetEle) {targetEle.onclick = exec;}});if (!global.isDOMLoaded) {document.addEventListener('readystatechange', function () {if ((document.readyState === "interactive" || document.readyState === "complete") && !global.isDOMRendered) {document.head.appendChild(stylenode);document.body.appendChild(node);global.isDOMRendered = true;console.log('Time Hooker Works!');}});} else {document.head.appendChild(stylenode);document.body.appendChild(node);global.isDOMRendered = true;console.log('Time Hooker Works!');}},applyGlobalAction: function (timer) {// 界面半圆按钮点击的方法timer.changeTime = function (anum, cnum, isa, isr) {if (isr) {global.timer.change(1);return;}if (!global.timer) {return;}var result;if (!anum && !cnum) {var t = prompt("输入欲改变计时器变化倍率(当前:" + 1 / timerContext._percentage + ")");if (t == null) {return;}if (isNaN(parseFloat(t))) {alert("请输入正确的数字");timer.changeTime();return;}if (parseFloat(t) <= 0) {alert("倍率不能小于等于0");timer.changeTime();return;}result = 1 / parseFloat(t);} else {if (isa && anum) {if (1 / timerContext._percentage <= 1 && anum < 0) {return;}result = 1 / (1 / timerContext._percentage + anum);} else {if (cnum <= 0) {cnum = 1 / -cnum}result = 1 / ((1 / timerContext._percentage) * cnum);}}timer.change(result);};global.changeTime = timer.changeTime;},applyHooking: function () {// 劫持循环计时器eHookContext.hookReplace(window, 'setInterval', function (setInterval) {return function () {// 储存原始时间间隔arguments[2] = arguments[1];// 获取变速时间间隔arguments[1] *= timerContext._percentage;var resultId = setInterval.apply(window, arguments);// 保存每次使用计时器得到的id以及参数等timerContext._intervalIds[resultId] = {args: arguments,nowId: resultId};return resultId;};});// 劫持循环计时器的清除方法eHookContext.hookBefore(window, 'clearInterval', function (method, args) {var id = args[0];if (timerContext._intervalIds[id]) {args[0] = timerContext._intervalIds[id].nowId;}// 清除该记录iddelete timerContext._intervalIds[id];});// 劫持循环计时器的清除方法eHookContext.hookBefore(window, 'clearTimeout', function (method, args) {var id = args[0];if (timerContext._intervalIds[id]) {args[0] = timerContext._intervalIds[id].nowId;}// 清除该记录iddelete timerContext._intervalIds[id];});// 劫持单次计时器setTimeouteHookContext.hookBefore(window, 'setTimeout', function (method, args) {args[1] *= timerContext._percentage;});var newFunc = this.getHookedDateConstructor();eHookContext.hookClass(window, 'Date', newFunc, '_innerDate', ['now']);Date.now = function () {return new Date().getTime();};eHookContext.hookedToString(timerContext._Date.now, Date.now);var objToString = Object.prototype.toString;eHookContext.hookAfter(Object.prototype, 'toString', function (m, args, result) {if (this instanceof timerContext._mDate) {return '[object Date]';} else {return result;}}, false);eHookContext.hookedToString(objToString, Object.prototype.toString);eHookContext.hookedToString(timerContext._setInterval, setInterval);eHookContext.hookedToString(timerContext._setTimeout, setTimeout);eHookContext.hookedToString(timerContext._clearInterval, clearInterval);timerContext._mDate = window.Date;this.hookShadowRoot();},getHookedDateConstructor: function () {return function () {if (arguments.length === 1) {Object.defineProperty(this, '_innerDate', {configurable: false,enumerable: false,value: new timerContext._Date(arguments[0]),writable: false});return;} else if (arguments.length > 1) {var definedValue;switch (arguments.length) {case 2:definedValue = new timerContext._Date(arguments[0],arguments[1]);break;case 3:definedValue = new timerContext._Date(arguments[0],arguments[1],arguments[2],);break;case 4:definedValue = new timerContext._Date(arguments[0],arguments[1],arguments[2],arguments[3],);break;case 5:definedValue = new timerContext._Date(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4]);break;case 6:definedValue = new timerContext._Date(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]);break;default:case 7:definedValue = new timerContext._Date(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6]);break;}Object.defineProperty(this, '_innerDate', {configurable: false,enumerable: false,value: definedValue,writable: false});return;}var now = timerContext._Date.now();var passTime = now - timerContext.__lastDatetime;var hookPassTime = passTime * (1 / timerContext._percentage);// console.log(__this.__lastDatetime + hookPassTime, now,__this.__lastDatetime + hookPassTime - now);Object.defineProperty(this, '_innerDate', {configurable: false,enumerable: false,value: new timerContext._Date(timerContext.__lastMDatetime + hookPassTime),writable: false});};},registerShortcutKeys: function (timer) {// 快捷键注册addEventListener('keydown', function (e) {switch (e.keyCode) {case 57:if (e.ctrlKey || e.altKey) {// customtimer.changeTime();}break;// [=]case 190:case 187: {if (e.ctrlKey) {// console.log('+2');timer.changeTime(2, 0, true);} else if (e.altKey) {// console.log('xx2');timer.changeTime(0, 2);}break;}// [-]case 188:case 189: {if (e.ctrlKey) {// console.log('-2');timer.changeTime(-2, 0, true);} else if (e.altKey) {// console.log('xx-2');timer.changeTime(0, -2);}break;}// [0]case 48: {if (e.ctrlKey || e.altKey) {// console.log('reset');timer.changeTime(0, 0, false, true);}break;}default:// console.log(e);}});},/*** 当计时器速率被改变时调用的回调方法* @param percentage* @private*/percentageChangeHandler: function (percentage) {// 改变所有的循环计时util.ergodicObject(timerContext, timerContext._intervalIds, function (idObj, id) {idObj.args[1] = Math.floor(idObj.args[2] * percentage);// console.log(idObj.args[1]);// 结束原来的计时器this._clearInterval.call(window, idObj.nowId);// 新开一个计时器idObj.nowId = this._setInterval.apply(window, idObj.args);});},hookShadowRoot: function () {var origin = Element.prototype.attachShadow;eHookContext.hookAfter(Element.prototype, 'attachShadow',function (m, args, result) {extraElements.push(result);return result;}, false);eHookContext.hookedToString(origin, Element.prototype.attachShadow);}}};var normalUtil = {isInIframe: function () {let is = global.parent !== global;try {is = is && global.parent.document.body.tagName !== 'FRAMESET'} catch (e) {// ignore}return is;},listenParentEvent: function (handler) {global.addEventListener('message', function (e) {var data = e.data;var type = data.type || '';if (type === 'changePercentage') {handler(data.percentage || 0);}})},sentChangesToIframe: function (percentage) {var iframes = document.querySelectorAll('iframe') || [];var frames = document.querySelectorAll('frame');if (iframes.length) {for (var i = 0; i < iframes.length; i++) {iframes[i].contentWindow.postMessage({type: 'changePercentage', percentage: percentage}, '*');}}if (frames.length) {for (var j = 0; j < frames.length; j++) {frames[j].contentWindow.postMessage({type: 'changePercentage', percentage: percentage}, '*');}}}};var querySelectorAll = function (ele, selector, includeExtra) {var elements = ele.querySelectorAll(selector);elements = Array.prototype.slice.call(elements || []);if (includeExtra) {extraElements.forEach(function (element) {elements = elements.concat(querySelectorAll(element, selector, false));})}return elements;};var generate = function () {return function (util) {// disable workerworkerURLs.forEach(function (url) {if (util.urlMatching(location.href, 'http.*://.*' + url + '.*')) {window['Worker'] = undefined;console.log('Worker disabled');}});var eHookContext = this;var timerHooker = {// 用于储存计时器的id和参数_intervalIds: {},// 计时器速率__percentage: 1.0,// 劫持前的原始的方法_setInterval: window['setInterval'],_clearInterval: window['clearInterval'],_clearTimeout: window['clearTimeout'],_setTimeout: window['setTimeout'],_Date: window['Date'],__lastDatetime: new Date().getTime(),__lastMDatetime: new Date().getTime(),videoSpeedInterval: 1000,/*** 初始化方法*/init: function () {var timerContext = this;var h = helper(eHookContext, timerContext, util);h.applyHooking();// 设定百分比属性被修改的回调Object.defineProperty(timerContext, '_percentage', {get: function () {return timerContext.__percentage;},set: function (percentage) {if (percentage === timerContext.__percentage) {return percentage;}h.percentageChangeHandler(percentage);timerContext.__percentage = percentage;return percentage;}});if (!normalUtil.isInIframe()) {console.log('[TimeHooker]', 'loading outer window...');h.applyUI();h.applyGlobalAction(timerContext);h.registerShortcutKeys(timerContext);} else {console.log('[TimeHooker]', 'loading inner window...');normalUtil.listenParentEvent((function (percentage) {console.log('[TimeHooker]', 'Inner Changed', percentage)this.change(percentage);}).bind(this))}},/*** 调用该方法改变计时器速率* @param percentage*/change: function (percentage) {var _this = this;this.__lastMDatetime = this._mDate.now();// console.log(this._mDate.toString());// console.log(new this._mDate());this.__lastDatetime = this._Date.now();// debugger;//---------------------------------//this._percentage = percentage;var oldNode = document.getElementsByClassName('_th-click-hover');var oldNode1 = document.getElementsByClassName('_th_times');var displayNum = (1 / this._percentage).toFixed(2);(oldNode[0] || {}).innerHTML = 'x' + displayNum;(oldNode1[0] || {}).innerHTML = 'x' + displayNum;var a = document.getElementsByClassName('_th_cover-all-show-times')[0] || {};// console.log(a.className);a.className = '_th_cover-all-show-times';this._setTimeout.bind(window)(function () {a.className = '_th_cover-all-show-times _th_hidden';}, 100);this.changeVideoSpeed();this._clearInterval.bind(window)(this.videoSpeedIntervalId);this.videoSpeedIntervalId = this._setInterval.bind(window)(function () {_this.changeVideoSpeed();var rate = 1 / _this._percentage;if (rate === 1) {_this._clearInterval.bind(window)(_this.videoSpeedIntervalId);}}, this.videoSpeedInterval);normalUtil.sentChangesToIframe(percentage);},changeVideoSpeed: function () {var rate = 1 / this._percentage;rate > 16 && (rate = 16);rate < 0.065 && (rate = 0.065);// console.log(rate);var videos = querySelectorAll(document, 'video', true) || [];if (videos.length) {for (var i = 0; i < videos.length; i++) {videos[i].playbackRate = rate;}}}};// 默认初始化timerHooker.init();return timerHooker;}};if (global.eHook) {global.eHook.plugins({name: 'timer',/*** 插件装载* @param util*/mount: generate()});}
}(window);

3.启用计时器掌控者


选择倍速,倍速可以怼到很大

Microsoft edge视频(广告)加速播放相关推荐

  1. flv,wmv等视频格式加速播放方法

    学习的过程中通常会看一些视频教程,快进播放可以节省很多时间~ 1.swf格式的可以通过MySpeed这个软件在浏览器播放,调节MySpeed就可以变速播放. 2.wmv格式的可以使用windows自带 ...

  2. 电脑b站html加速播放,b站视频怎么加速播放-将B站视频调速播放的方法 - 河东软件园...

    B站是国内有名的视频播放网站,这个网站中有很多专业视频播放器中没有的资源,特别是喜欢动漫的用户对这个网站想必是非常熟悉的了.不知道大家有没有发现,现在很多的视频制作的剧情都很拖沓,明明两分钟可以演完的 ...

  3. Microsoft Edge 去除广告

    1. 2. 点击打开 Microsoft Edge 外接程序网站 或 3.

  4. 【Mac使用技巧】QuickTime Player 如何让声音和视频同步加速播放 from csdner +HurryChen+

    问题:Mac上用QuickTime Player播放视频,想倍速观看,怎么能精确调整速度,并且让声音跟视频画面同步加速? 解决办法: 按住option键,同时点击如图双箭头,每点击一次,速度加快0.1 ...

  5. 【Mac使用技巧】QuickTime Player 如何让声音和视频同步加速播放

    问题:Mac上用QuickTime Player播放视频,想倍速观看,怎么能精确调整速度,并且让声音跟视频画面同步加速? 解决办法: 按住option键,同时点击如图双箭头,每点击一次,速度加快0.1 ...

  6. Microsoft Edge使用方法和心得

    Microsoft Edge 使用方法和心得 本文目录: 一.写在前面的话 二.Edge浏览器简介 三.Microsoft Edge性能 3.1.睡眠标签 3.2.启动加速 3.3.清晰度提升 四.M ...

  7. 新版Microsoft Edge支持跨平台跨设备浏览

    之前一直使用Google Chrome浏览器,可以随意安装插件扩展程序,无广告,这是我钟爱她的原因.但是之后不能登录Google账号,不能实现跨设备应用,就想找一款好用的替代品,近期发现了新版的Mic ...

  8. 百度网盘视频倍速播放

    百度网盘视频倍速播放 (更新一下,插件叫"百度云盘HTML5视频倍速播放",原来那个好像没用了) 因为考研需要刷网课,但是百度云倍速放视频需要svip,30元/月还是挺贵的,于是去 ...

  9. 全球及中国数字视频广告行业研究及十四五规划分析报告

    [报告篇幅]:120 [报告图表数]:164 [报告出版时间]:2021年1月 报告摘要 2019年,全球数字视频广告市场规模达到了xx亿元,预计2026年将达到xx亿元,年复合增长率(CAGR)为x ...

最新文章

  1. MongoDB 和 NoSQL简介
  2. React路上遇到的Bug
  3. DNA repair - HDU 2457(自动机+dp)
  4. django CBV装饰器 自定义django中间件 csrf跨站请求伪造 auth认证模块
  5. 用mac的safari浏览器调试ios手机的网页
  6. 从零开始学 Kotlin 之「2」数据类型
  7. c语言电子钢琴课程设计,单片机课程设计(电子琴).doc
  8. 触屏java版象棋下载 游戏下载安装_中国象棋官方版下载
  9. 数组和集合的互相转换
  10. 丰富网页摘要——HTML5中的“微数据”(MicroData)
  11. 一篇文章教你选出廉价好用的家用投影仪!
  12. 天梯赛PTA-7-17 约瑟夫环
  13. 麒麟操作系统之光盘刻录
  14. 【毕业设计】基于云平台的火灾报警器 - stm32 物联网 单片机 OneNET云平台
  15. EOS智能合约开发系列(17): 神秘的eosio.code
  16. jsp的两种开发模式
  17. 【宝贝,既然你爱了,那就敞开心扉】
  18. 罗技k380连接双系统(win10和ubuntu18)
  19. Flutter自定义Widget之炫酷粒子时钟效果
  20. 计算机应用与英语教学的深度融合,浅谈计算机应用与英语教学的整合

热门文章

  1. python猴子分桃_猴子分桃 - Ryan in C++ - 博客园
  2. WiFi无线网卡属性设置——英特尔无线适配器高级设置
  3. 深拷⻉浅拷⻉的区别?什么是深拷⻉浅拷⻉
  4. 码农的自我修养 - 流程图 Flowchart
  5. Prometheus配合 alertmanager 使用企业微信告警(坑已平!!!)
  6. ubuntu 下的开机启动项管理命令
  7. WebStorm的下载与安装
  8. on device trainning
  9. setImageBitmap 图片太大部分机型不显示
  10. 网络攻击机制和技术发展综述