您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adblocker for Joyn.de, because the common adblockers are blocked
// ==UserScript== // @name Joyn.de Adblocker // @name:de Joyn.de Adblocker // @version 2.0.0 // @description Adblocker for Joyn.de, because the common adblockers are blocked // @description:de Adblocker für Joyn.de, da die gängigen Adblocker blockiert werden // @icon https://www.joyn.de/favicon.ico // @author TalkLounge (https://github.com/TalkLounge) // @namespace https://github.com/TalkLounge/joyn.de-adblocker // @license MIT // @match https://www.joyn.de/* // @grant none // @run-at document-start // ==/UserScript== (function () { 'use strict'; const old_window_top_fetch = window.top.fetch; function checkURL(args, url) { if ( ( typeof (args[0]) == "object" && args[0].url && new URL(args[0].url).host.includes(url) ) || ( typeof (args[0]) == "string" && args[0] && new URL(args[0]).host.includes(url) ) ) { return true; } } window.top.fetch = function (...args) { if ([ "sqrt-5041.de", "ad71.adfarm1.adition.com", "bat.bing.com", "9478953.fls.doubleclick.net", "googleads.g.doubleclick.net", "connect.facebook.net", "static.hotjar.com", "cdn-gl.nmrodam.com", "amplify.outbrain.com", "tr.outbrain.com", "alb.reddit.com", "cdn.segment.com", "o292998.ingest.sentry.io", "dmp.theadex.com", "analytics.tiktok.com" ].find(item => checkURL(args, item))) { // Block Ad & Tracking Web Requests from Privacy Badger Extension return; } if (!checkURL(args, "swankyrule.zomap.de")) { // Don't Intercept other Web Requests except https://swankyrule.zomap.de/v2/ return old_window_top_fetch.apply(null, args); } return new Promise(async (resolve, reject) => { const data = await old_window_top_fetch.apply(null, args); const text = await (await data.clone()).text(); if (text.indexOf("<MediaFiles>") == -1) { return resolve(data); } data.text = function () { return new Promise((resolve, reject) => { const xmlDoc = new DOMParser().parseFromString(text, "text/xml"); xmlDoc.querySelectorAll("MediaFile").forEach((item) => item.remove()); // Delete all MediaFile Elements in XML resolve(new XMLSerializer().serializeToString(xmlDoc)); }); }; resolve(data); }); }; })();