Skip to content

https://www.welt.de/ #39

Closed
Closed

Description

@mOrbo-git

Script is not working on https://www.welt.de/

There is a Popup with an error and the site is not loading.

Using AdGuard on iOS (Safari) and the Userscript (3.2.1) installed via the iOS App „Userscripts“.

With AdGuard and Userscript:
Image
Image

Without AdGuard:

Image

Activity

  1. piquark6046 commented on Jan 8, 2026

    @piquark6046
    Member

    Did you read the pinned issue? #38

  2. mOrbo-git commented on Jan 8, 2026

    @mOrbo-git
    Author

    Actually not, thanks. If it’s because of a memory limit, would it help to clear all entries in the script, except for welt.de and install it as a custom script?

  3. piquark6046 commented on Jan 8, 2026

    @piquark6046
    Member

    If it’s because of a memory limit, would it help to clear all entries in the script, except for welt.de and install it as a custom script?

    Yes.

  4. mOrbo-git commented on Jan 8, 2026

    @mOrbo-git
    Author

    Thanks, I deleted all websites in the script except welt.de. After uploading the script to a webspace and reinstalling it, welt.de is now working again.

    tinyShield.user.js

  5. mOrbo-git commented on Jan 9, 2026

    @mOrbo-git
    Author

    I have to revert my answer. It worked yesterday, but today the error message appears again.

    I think they changed something from yesterday to today. Now it does not work with the cleared script with only 4 entries. I don’t think this has anything to do with the memory limit anymore.

    I’m using this version and the popup still comes up. The site welt.de is not usable anymore:
    tinyShield.user.js

  6. piquark6046 commented on Jan 9, 2026

    @piquark6046
    Member

    #39 (comment)

    Unable to reproduce with the following config:

    tinyShield built with reduced `@match` fields

    // ==UserScript==
    // @name         tinyShield (Development)
    // @encoding     utf-8
    // @namespace    https://github.com/FilteringDev/tinyShield
    // @homepageURL  https://github.com/FilteringDev/tinyShield
    // @supportURL   https://github.com/FilteringDev/tinyShield/issues
    // @updateURL    https://cdn.jsdelivr.net/npm/@filteringdev/tinyshield@latest/dist/tinyShield.user.js
    // @downloadURL  https://cdn.jsdelivr.net/npm/@filteringdev/tinyshield@latest/dist/tinyShield.user.js
    // @license      MIT
    //
    // @version      0.0.0
    // @author       PiQuark6046 and contributors
    //
    // @match        *://welt.de/*
    // @match        *://*.welt.de/*
    //
    // @description        tinyShield allows AdGuard, uBlock Origin, Brave and ABP to resist against Ad-Shield quickly.
    // @description:ko     tinyShield는 AdGuard, uBlock Origin, Brave 와 ABP가 애드쉴드에 빠르게 저항할 수 있도록 합니다.
    // @description:ja     tinyShieldを使うと、AdGuard, uBlock Origin, Brave, およびABPがAd-Shieldに素早く対抗できます。
    //
    // @grant        unsafeWindow
    // @run-at       document-start
    // ==/UserScript==
    
    
    (() => {
      // sources/src/utils.ts
      function CountCommonStrings(ArrayA, ArrayB) {
        let SetB = new Set(ArrayB);
        const Common = new Set(ArrayA.filter((Item) => SetB.has(Item)));
        return Common.size;
      }
    
      // sources/src/as-weakmap.ts
      function CheckDepthInASWeakMap(Args) {
        if (typeof Args[0] !== "object") {
          return false;
        }
        if (CountCommonStrings(["device", "id", "imp", "regs", "site", "source"], Object.keys(Args[0])) < 5) {
          return false;
        }
        let ASBannerFrameIdRegExp = /^[0-9]+\/[a-zA-Z0-9]+\/[a-zA-Z0-9]+\/[a-z0-9-\(\)]+\/[a-zA-Z0-9_]+_slot[0-9]+_+/;
        let ASBannerFrameKey = Object.keys(Args[0]).find((Arg) => typeof Args[0][Arg] === "object" && Array.isArray(Args[0][Arg]) && Args[0][Arg].filter((SubArg) => typeof SubArg === "object" && Object.keys(SubArg).filter((InnerArg) => {
          return typeof InnerArg === "string" && OriginalRegExpTest.call(ASBannerFrameIdRegExp, InnerArg);
        })).length >= 1);
        if (typeof ASBannerFrameKey === "undefined") {
          return false;
        }
        return true;
      }
    
      // sources/src/index.ts
      var Win = typeof unsafeWindow !== "undefined" ? unsafeWindow : window;
      var OriginalRegExpTest = Win.RegExp.prototype.test;
      function RunTinyShieldUserscript(BrowserWindow, UserscriptName = "tinyShield") {
        const OriginalArrayToString = BrowserWindow.Array.prototype.toString;
        const OriginalRegExpTest2 = BrowserWindow.RegExp.prototype.test;
        const ProtectedFunctionStrings = ["toString", "get", "set"];
        BrowserWindow.Function.prototype.toString = new Proxy(BrowserWindow.Function.prototype.toString, {
          // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
          apply(Target, ThisArg, Args) {
            if (ProtectedFunctionStrings.includes(ThisArg.name)) {
              return `function ${ThisArg.name}() { [native code] }`;
            } else {
              return Reflect.apply(Target, ThisArg, Args);
            }
          }
        });
        const ASInitPositiveRegExps = [[
          /[a-zA-Z0-9]+ *=> *{ *const *[a-zA-Z0-9]+ *= *[a-zA-Z0-9]+ *; *if/,
          /===? *[a-zA-Z0-9]+ *\[ *[a-zA-Z0-9]+\( *[0-9a-z]+ *\) *\] *\) *return *[a-zA-Z0-9]+ *\( *{ *('|")?inventoryId('|")? *:/,
          /{ *('|")?inventoryId('|")? *: *this *\[[a-zA-Z0-9]+ *\( *[0-9a-z]+ *\) *\] *, *\.\.\. *[a-zA-Z0-9]+ *\[ *[a-zA-Z0-9]+ *\( *[0-9a-z]+ * *\) *\] *} *\)/
        ]];
        BrowserWindow.Map.prototype.get = new Proxy(BrowserWindow.Map.prototype.get, {
          apply(Target, ThisArg, Args) {
            if (Args.length > 0 && typeof Args[0] !== "function") {
              return Reflect.apply(Target, ThisArg, Args);
            }
            let ArgText = OriginalArrayToString.call(Args);
            if (ASInitPositiveRegExps.filter((ASInitPositiveRegExp) => ASInitPositiveRegExp.filter((Index) => OriginalRegExpTest2.call(Index, ArgText)).length >= 2).length === 1) {
              console.debug(`[${UserscriptName}]: Map.prototype.get:`, ThisArg, Args);
              throw new Error();
            }
            return Reflect.apply(Target, ThisArg, Args);
          }
        });
        const ASReinsertedAdvInvenPositiveRegExps = [[
          /inventory_id,[a-zA-Z0-9-]+\/[a-zA-Z0-9]+\/[a-zA-Z0-9]+/,
          /inventory_id,[a-zA-Z0-9-]+\/[a-zA-Z0-9]+\/[a-zA-Z0-9]+/,
          /inventory_id,[a-zA-Z0-9-]+\/[a-zA-Z0-9]+\/[a-zA-Z0-9]+/
        ], [
          /[a-z0-9A-Z]+\.setAttribute\( *('|")onload('|") *, *('|")! *async *function\( *\) *\{ *let */,
          /confirm\( *[A-Za-z0-9]+ *\) *\) *{ *const *[A-Za-z0-9]+ *= *new *[A-Za-z0-9]+\.URL\(('|")https:\/\/report\.error-report\.com\//,
          /\.forEach *\( *\( *[A-Za-z0-9]+ *=> *[A-Za-z0-9]+\.remove *\( *\) *\) *\) *\) *, *[0-9a-f]+ *\) *; *const *[A-Za-z0-9]+ *= *await *\( *await *fetch *\(/
        ]];
        BrowserWindow.Map.prototype.set = new Proxy(BrowserWindow.Map.prototype.set, {
          apply(Target, ThisArg, Args) {
            let ArgText = "";
            try {
              ArgText = OriginalArrayToString.call(Args);
            } catch {
              console.warn(`[${UserscriptName}]: Map.prototype.set:`, ThisArg, Args);
            }
            if (ASReinsertedAdvInvenPositiveRegExps.filter((ASReinsertedAdvInvenPositiveRegExp) => ASReinsertedAdvInvenPositiveRegExp.filter((Index) => OriginalRegExpTest2.call(Index, ArgText)).length >= 3).length === 1) {
              console.debug(`[${UserscriptName}]: Map.prototype.set:`, ThisArg, Args);
              throw new Error();
            }
            return Reflect.apply(Target, ThisArg, Args);
          }
        });
        BrowserWindow.WeakMap.prototype.set = new Proxy(BrowserWindow.WeakMap.prototype.set, {
          apply(Target, ThisArg, Args) {
            if (CheckDepthInASWeakMap(Args)) {
              console.debug(`[${UserscriptName}]: WeakMap.prototype.set:`, ThisArg, Args);
              throw new Error();
            }
            return Reflect.apply(Target, ThisArg, Args);
          }
        });
        let ASTimerRegExps = [[
          /async *\( *\) *=> *{ *const *[A-Za-z0-9]+ *= *[A-Za-z0-9]+ *; *await *[A-Za-z0-9]+ *\( *\)/,
          /; *await *[A-Za-z0-9]+ *\( *\) *, *[A-Za-z0-9]+ *\( *! *1 *, *new *Error *\( *[A-Za-z0-9]+ *\( *[0-9a-f]+ *\) *\) *\) *}/,
          / *\) *\) *\) *}/
        ]];
        BrowserWindow.setTimeout = new Proxy(BrowserWindow.setTimeout, {
          apply(Target, ThisArg, Args) {
            if (ASTimerRegExps.filter((ASTimerRegExp) => ASTimerRegExp.filter((Index) => Index.test(Args[0].toString())).length >= 3).length === 1) {
              console.debug(`[${UserscriptName}]: setTimeout:`, Args);
              return;
            }
            return Reflect.apply(Target, ThisArg, Args);
          }
        });
        BrowserWindow.setInterval = new Proxy(BrowserWindow.setInterval, {
          apply(Target, ThisArg, Args) {
            if (ASTimerRegExps.filter((ASTimerRegExp) => ASTimerRegExp.filter((Index) => Index.test(Args[0].toString())).length >= 3).length === 1) {
              console.debug(`[${UserscriptName}]: setInterval:`, Args);
              return;
            }
            return Reflect.apply(Target, ThisArg, Args);
          }
        });
      }
      RunTinyShieldUserscript(Win);
    })();
    /*!
     * @license MPL-2.0
     * This Source Code Form is subject to the terms of the Mozilla Public
     * License, v. 2.0. If a copy of the MPL was not distributed with this
     * file, You can obtain one at https://mozilla.org/MPL/2.0/.
     *
     * Contributors:
     *   - See Git history at https://github.com/FilteringDev/tinyShield for detailed authorship information.
     */

    With AdGuard for iOS (AdGuard Base, AdGuard Mobile Ads, AdGuard Tracking protection and AdGuard German filters list only; no DNS filters lists; AdGuard non-filtering DNS server upstream used).
    To reproduce any Ad-Shield issue at the website for me, connecting to AdGuard VPN for iOS is required. Disabling AdGuard VPN makes that Ad-Shield is disabled.
    Only I confirmed https://welt.de/ only.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions