您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Bypasses the Germany block on /r/watchpeopledie
// ==UserScript== // @name reddit: /r/watchpeopledie censor bypass // @namespace xk265z9sx26le7jte9rtz5h8su6adofn // @description Bypasses the Germany block on /r/watchpeopledie // @license MIT License // @match *://*.reddit.com/r/watchpeopledie/* // @match *://*.reddit.com//r/watchpeopledie/* // @version 1.0 // @grant none // @run-at document-start // ==/UserScript== /* jshint bitwise: true, curly: true, eqeqeq: true, esversion: 6, funcscope: false, futurehostile: true, latedef: true, noarg: true, nocomma: true, nonbsp: true, nonew: true, notypeof: false, shadow: outer, singleGroups: true, strict: true, undef: true, unused: true, varstmt: true, browser: true */ (function () { "use strict"; const prefixFrom = /^\/r\/watchpeopledie\//; const prefixTo = "//r/watchpeopledie/"; // Returns the rewritten URL, or the original URL // if nothing was changed. const rewriteURL = function (url) { let rewrite; try { rewrite = new URL(url); rewrite.pathname = rewrite.pathname.replace(prefixFrom, prefixTo); } catch (e) { return url; } return rewrite.href; }; if (prefixFrom.test(location.pathname)) { document.documentElement.hidden = true; location.replace(rewriteURL(location.href)); } else { // Generate random string let random = ""; { const chars = "abcdefghijklmnopqrstuvwxyz0123456789"; const charCount = chars.length; for (let i = 0; i < 16; i++) { random += chars.charAt(Math.floor(Math.random() * charCount)); } } const attribName = "data-wpdprocessed-" + random; const selector = "a:not([" + attribName + "]),form:not([" + attribName + "])"; const rewriteElement = function (element) { let tagName = element.tagName.toUpperCase(); let attribute; if (tagName === "A") { attribute = "href"; } else if (tagName === "FORM") { attribute = "action"; } else { return; } const oldURL = element[attribute]; const newURL = rewriteURL(oldURL); if (newURL !== oldURL) { element[attribute] = newURL; } // Mark this element as done so our selector won't find it again if (!element.hasAttribute(attribName)) { element.setAttribute(attribName, ""); } }; const rewriteElementsInside = function (root) { for (const element of root.querySelectorAll(selector)) { rewriteElement(element); } }; window.addEventListener("DOMContentLoaded", () => { rewriteElementsInside(document); new MutationObserver((mutations) => { for (const mutation of mutations) { if (mutation.type === "attributes") { // We intentionally don't check for // the special attribute here. // This may be called on elements that // were already rewritten, but then // had their href/action changed. rewriteElement(mutation.target); } else if (mutation.addedNodes.length) { rewriteElementsInside(mutation.target); } } }).observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ["href", "action"] }); }, { capture: true }); } })();