您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Blocks BlockAdBlock scripts. Toggleable if required.
当前为
// ==UserScript== // @name BlockBlockAdBlock // @namespace ZOWEB // @version 3 // @description Blocks BlockAdBlock scripts. Toggleable if required. // @match *://*/* // @run-at document-start // @license MIT // @noframes // ==/UserScript== function addFunction(func, exec) { // wait for document.head const int = setInterval(() => { if (!document.head) return; console.debug("Inserting script."); const script = document.createElement("script"); script.textContent = "-" + func + (exec ? "()" : ""); document.head.appendChild(script); setTimeout(script.remove.bind(script), 0); clearInterval(int); }, 0); } addFunction(function() { let hasEvaled = false, firstEvalId, firstEvalCode; const oldEval = window.eval; function runEval(d) { const id = Math.floor(Math.random() * 20), runChecker = Math.floor(Math.random() * 255).toString(16); function b(checker) { if (checker === runChecker) { console.warn("bbab * Running eval script!"); return oldEval(d); } else console.error("bbab * Invalid checker! Eval will only run with the checker specified."); } if (!hasEvaled) { hasEvaled = true; firstEvalId = id; firstEvalCode = runChecker; runFirstTime(); } if (localStorage.getItem("bbab") !== "disable") { console.warn(" * ---- * --- * --- * ---- *"); console.warn("bbab * Eval script was blocked *"); console.warn("bbab * From:", (new Error()).stack.split("\n")[1]); console.warn("bbab * [ To run this script, type the following into the console: ]"); console.warn("bbab * [ window._bbab_" + id + "(\"" + runChecker + "\") ]"); console.warn("bbab * [ To print this script, type the following into the console: ]"); console.warn("bbab * [ window._bbab_p_" + id + " ]"); window["_bbab_" + id] = a => b(a); window["_bbab_" + id].toString = () => "[function BlockBlockAdBlock]"; window["_bbab_p_" + id] = d; } else { console.warn("bbab * Letting through eval script as we are disabled."); return oldEval(d); } return new Error("Eval script was blocked."); } window.eval = d => runEval(d); window.eval.toString = () => "function eval() {\n [native code]\n}"; window.eval.toString.toString = () => "function toString() {\n [native code]\n}"; const elem = document.createElement("p"); const targeter = document.createElement("button"); const hider = document.createElement("button"); function runFirstTime() { console.info("Inserting popup if enabled"); // if we've visited this page multiple times add a popup to say so if (localStorage.getItem("bbab.visited") === "yes") { elem.id = "BBAB_POPUP"; elem.style.position = "fixed"; elem.style.bottom = ".5em"; elem.style.right = ".5em"; elem.style.padding = "1em"; elem.style.backgroundColor = "#314159"; elem.style.color = "#eff4ff"; elem.style.borderRadius = "3px"; elem.style.fontFamily = "sans-serif"; elem.style.fontSize = "16px"; elem.style.zIndex = "999999"; const href = document.createElement("a"); href.href = "#"; href.style.color = "#99a9e6"; href.style.textDecoration = "underline"; const reloadLink = document.createElement("a"); reloadLink.href = "#"; reloadLink.style.color = "#99a9e6"; reloadLink.style.textDecoration = "underline"; reloadLink.textContent = "Reload to update"; reloadLink.onclick = location.reload.bind(location, true); const antiDMCA = document.createElement("small"); antiDMCA.style.fontSize = "0.75em"; antiDMCA.style.display = "none"; antiDMCA.textContent = "Note: blocking BlockAdBlock is not against the DMCA (as much as they want you to think it is)"; window.addEventListener("keydown", e => { if (e.key !== "F12") return; antiDMCA.style.display = ""; }); if (localStorage.getItem("bbab") !== "disable") { elem.textContent = "Disabling your adblocker on pages you visit frequently will help them survive. "; href.textContent = "Turn off BlockBlockAdBlock"; href.addEventListener("click", e => { e.preventDefault(); localStorage.setItem("bbab", "disable"); elem.remove(); window["_bbab_" + firstEvalId](firstEvalCode); }); } else { elem.textContent = ""; href.textContent = "Enable BBAB"; href.addEventListener("click", e => { e.preventDefault(); localStorage.setItem("bbab", "enable"); elem.textContent = ""; elem.appendChild(reloadLink); }); } elem.appendChild(href); elem.appendChild(document.createElement("br")); elem.appendChild(antiDMCA); console.debug("Inserting elem"); document.body.appendChild(elem); } localStorage.setItem("bbab.visited", "yes"); } window.onload = () => { console.debug("Checking if we've been blocked"); // add another element incase BlockAdBlock does magic // which seems to hide from MutationObservers???????? targeter.style.zIndex = "999999"; targeter.style.position = "fixed"; targeter.style.left = "4em"; targeter.style.bottom = ".5em"; targeter.style.borderRadius = "3px"; targeter.style.backgroundColor = "#eff4ff"; targeter.style.border = "1px solid #314159"; targeter.style.color = "#314159"; targeter.style.cursor = "pointer"; targeter.style.fontFamily = "sans-serif"; targeter.style.fontSize = "16px"; targeter.style.padding = ".1em .3em"; targeter.textContent = "Delete Annoying Element"; hider.style.zIndex = "999999"; hider.style.position = "fixed"; hider.style.left = ".5em"; hider.style.bottom = ".5em"; hider.style.borderRadius = "3px"; hider.style.backgroundColor = "#eff4ff"; hider.style.border = "1px solid #314159"; hider.style.color = "#314159"; hider.style.cursor = "pointer"; hider.style.fontFamily = "sans-serif"; hider.style.fontSize = "16px"; hider.style.padding = ".1em .3em"; hider.style.transition = "200ms ease-out"; hider.textContent = "[Hide]"; function toggleElements() { if (localStorage.getItem("bbab.visibility") === "visible") { targeter.style.display = "none"; elem.style.display = "none"; localStorage.setItem("bbab.visibility", "hidden"); hider.style.bottom = "-.7em"; hider.textContent = "____"; } else { hider.textContent = "[Hide]"; targeter.style.display = ""; elem.style.display = ""; localStorage.setItem("bbab.visibility", "visible"); hider.style.bottom = ".5em"; } } // toggle twice to go back to normal toggleElements(); toggleElements(); document.body.appendChild(hider); document.body.appendChild(targeter); hider.onclick = () => toggleElements(); targeter.onclick = () => { const overlay = document.createElement("div"); overlay.style.position = "fixed"; overlay.style.zIndex = "99999"; overlay.style.background = "rgba(255,255,255,0.6)"; overlay.style.cursor = "select"; overlay.style.pointerEvents = "none"; overlay.style.border = "1px dashed black"; document.body.appendChild(overlay); targeter.style.pointerEvents = "none"; targeter.style.opacity = "0.4"; hider.style.pointerEvents = "none"; hider.style.opacity = "0.4"; elem.style.pointerEvents = "none"; elem.style.opacity = "0.4"; let target = {remove(){}}; function mouseMove(e) { target = e.target; const targetPos = target.getBoundingClientRect(); overlay.style.top = `${targetPos.top}px`; overlay.style.left = `${targetPos.left}px`; overlay.style.width = `${targetPos.width}px`; overlay.style.height = `${targetPos.height}px`; } function mouseDown(e) { e.preventDefault(); window.removeEventListener("mousemove", mouseMove); window.removeEventListener("mousedown", mouseDown); window.removeEventListener("keydown", keyDown); target.remove(); overlay.remove(); targeter.style.pointerEvents = ""; targeter.style.opacity = ""; hider.style.pointerEvents = ""; hider.style.opacity = ""; elem.style.pointerEvents = ""; elem.style.opacity = ""; } function keyDown(e) { console.log(e.key); if (e.key !== "Esc") return; e.preventDefault(); window.removeEventListener("mousemove", mouseMove); window.removeEventListener("mousedown", mouseDown); window.removeEventListener("keydown", keyDown); overlay.remove(); targeter.style.pointerEvents = ""; targeter.style.opacity = ""; hider.style.pointerEvents = ""; hider.style.opacity = ""; elem.style.pointerEvents = ""; elem.style.opacity = ""; } window.addEventListener("mousemove", mouseMove); window.addEventListener("mousedown", mouseDown); window.addEventListener("keydown", keyDown); }; if (localStorage.getItem("bbab") !== "disable" && document.getElementById("babasbmsgx") !== null) document.getElementById("babasbmsgx").remove(); }; }, true); console.info("You are being protected.");