Paywalls der Verlage überwinden: Bypass Paywall Clean von Mozilla geblockt


Kommentare zu folgendem Beitrag: Paywalls der Verlage überwinden: Bypass Paywall Clean von Mozilla geblockt

Die Mozilla Foundation ging nun auch gegen das Tool Bypass Paywalls Clean vor. Beim Firefox ist das Add-on deaktiviert, GitHub löschte das Tool ohnehin schon vor längerer Zeit.

Die hosten das jetzt hier: https://gitflic.ru/project/magnolia1234/bypass-paywalls-firefox-clean

1 „Gefällt mir“

mit einem selbst geschriebenen tampermonkey-script lassen sich die artikel auch über die archive(vn/fi/md) abrufen. gilt für
// @match https://www.spiegel.de/*
// @match https://www.tagesspiegel.de/*
// @match https://www.zeit.de/*
// @match https://www.welt.de/*
// @match https://www.sueddeutsche.de/*
// @match https://www.faz.net/*
// @match https://www.bild.de/*
// @match https://www.heise.de/*

hb.com und wiwo lassen sich ebenfalls zuverlässig lesen, dafuer wird nicht einmal ein archiv oder aehnliches benoetigt…
bei interesse gerne PN

aufgrund des hohen interesses nach meinem script möchte ich es hier öffentlich stellen um nicht jede nachricht einzeln beantworten zu müssen. die funktion ist ähnlich dem des addons, beschränkt sich allerdings auf einige wenig deutsche nachrichtenseiten. offenbar hat allerdings archive.* eine cloudflare-captcha-prüfung vorgeschaltet, weshalb das addon nicht direkt die nachrichten abgreifen kann, sondern bei dem captcha-check „stecken“ bleibt. das script prüft zunächst ob ein archivierter artikel verfügbar ist und erreichbar ist. falls ja, öffnet das archiv in neuem tab. falls etwas nicht klappt, öffnet stattdessen der link zum artikel. möglicherweise muss an der stelle das captcha gelöst werden oder es gibt schlicht noch kein archiv dazu. viel spass beim testen. feedback ausdrücklich erwünscht.

// ==UserScript==
// @name         Nachrichten aus Archiv lesen
// @namespace    N/A
// @version      0.7.0
// @description  Findet echten Kurzlink aus archive.vn/.ph/.fo
// @match        https://www.spiegel.de/*
// @match        https://www.tagesspiegel.de/*
// @match        https://www.zeit.de/*
// @match        https://www.welt.de/*
// @match        https://www.sueddeutsche.de/*
// @match        https://www.faz.net/*
// @match        https://www.bild.de/*
// @match        https://www.heise.de/*
// @grant        GM_xmlhttpRequest
// @grant        GM_setValue
// @grant        GM_getValue
// @connect      archive.vn
// @connect      archive.ph
// @connect      archive.fo
// @connect      archive.is
// @connect      archive.md
// @connect      archive.li
// @connect      archive.today
// ==/UserScript==

(function () {
    'use strict';

    // Konfiguration
    const config = {
        tlds: ['vn', 'ph', 'fo', 'is', 'md', 'li', 'today'],
        timeout: 8000, // 8 Sekunden Timeout pro Archive
        retries: 2, // Anzahl Wiederholungen bei Netzwerkfehlern
    };

    window.addEventListener('load', () => {
        // Nur fortfahren, wenn ein Pfad existiert (nicht nur Domain)
        const path = location.pathname;
        const host = location.hostname;

        // Button nur anzeigen, wenn Pfad weiterführt
        const isStartseite = (
            path === '/' ||
            path === '' ||
            (host.includes('faz.net') && path === '/aktuell/') ||
            (host.includes('zeit.de') && path === '/index')
        );
        if (isStartseite) return;

        setTimeout(() => {
            if (document.getElementById('archive-button')) return;
            createArchiveButton();
        }, 500);
    });

    function createArchiveButton() {
        const btn = document.createElement('button');
        btn.id = 'archive-button';
        btn.textContent = 'Archiv anzeigen';
        btn.title = 'Klick: Archivierte Version suchen\nShift+Klick: Direkt zu archive.vn\nAlt+Klick: Neue Archivierung erstellen';

        Object.assign(btn.style, {
            position: 'fixed',
            bottom: '40px',
            left: '75%',
            transform: 'translateX(-50%)',
            zIndex: '2147483647',
            backgroundColor: '#ffcc00',
            color: '#000',
            fontSize: '16px',
            fontWeight: 'bold',
            padding: '12px 24px',
            border: '2px solid #000',
            borderRadius: '10px',
            cursor: 'pointer',
            boxShadow: '0 4px 8px rgba(0,0,0,0.3)',
            transition: 'all 0.2s ease',
            fontFamily: 'Arial, sans-serif',
        });

        // Hover-Effekt
        btn.addEventListener('mouseenter', () => {
            btn.style.backgroundColor = '#ffd700';
            btn.style.transform = 'translateX(-50%) scale(1.05)';
        });

        btn.addEventListener('mouseleave', () => {
            btn.style.backgroundColor = '#ffcc00';
            btn.style.transform = 'translateX(-50%) scale(1)';
        });

        btn.onclick = handleButtonClick;

        // Keyboard shortcut: Ctrl+Shift+A
        document.addEventListener('keydown', (e) => {
            if (e.ctrlKey && e.shiftKey && e.key === 'A') {
                e.preventDefault();
                handleButtonClick(e);
            }
        });

        document.body.appendChild(btn);
    }

    function handleButtonClick(event) {
        const btn = document.getElementById('archive-button');
        if (btn.disabled) return;

        const currentUrl = location.href;
        const hostAndPath = location.host + location.pathname;

        // Verschiedene Modi basierend auf Modifier-Keys
        if (event.shiftKey) {
            // Shift+Klick: Direkt zu archive.vn ohne Suche
            openArchiveUrl(`https://archive.vn/https://${hostAndPath}`);
            return;
        }

        if (event.altKey) {
            // Alt+Klick: Neue Archivierung erstellen
            openArchiveUrl(`https://archive.vn/submit/?url=${encodeURIComponent(currentUrl)}`);
            return;
        }

        // Normale Suche
        searchForArchivedVersion(btn, hostAndPath);
    }

    function searchForArchivedVersion(btn, hostAndPath) {
        btn.textContent = 'Suche Archiv...';
        btn.disabled = true;

        // Bevorzugte Archive basierend auf letztem Erfolg
        const lastSuccessfulTld = GM_getValue('lastSuccessfulTld', '');
        const sortedTlds = lastSuccessfulTld ?
            [lastSuccessfulTld, ...config.tlds.filter(t => t !== lastSuccessfulTld)] :
            config.tlds;

        tryNextArchive(0, sortedTlds, hostAndPath, btn);
    }

    function tryNextArchive(index, tlds, hostAndPath, btn, retryCount = 0) {
        if (index >= tlds.length) {
            // Fallback: Öffne archive.vn direkt für manuelle Archivierung
            btn.textContent = 'Öffne Archiv...';
            const fallbackUrl = `https://archive.vn/https://${hostAndPath}`;

            setTimeout(() => {
                openArchiveUrl(fallbackUrl);
                btn.textContent = 'Archiv geöffnet';
                btn.disabled = false;

                // Nach 3 Sekunden Button-Text zurücksetzen
                setTimeout(() => {
                    btn.textContent = 'Archiv anzeigen';
                }, 3000);
            }, 500);
            return;
        }

        const tld = tlds[index];
        const archiveUrl = `https://archive.${tld}/https://${hostAndPath}`;

        // Progress anzeigen
        btn.textContent = `Prüfe ${tld}... (${index + 1}/${tlds.length})`;

        GM_xmlhttpRequest({
            method: 'GET',
            url: archiveUrl,
            timeout: config.timeout,
            onload: (res) => {
                if (res.status === 200) {
                    const shortUrl = findValidArchiveUrl(res.responseText, tld);

                    if (shortUrl) {
                        // Erfolg! Merke dir dieses TLD für nächstes Mal
                        GM_setValue('lastSuccessfulTld', tld);
                        openArchiveUrl(shortUrl);
                        btn.textContent = 'Archiv gefunden!';

                        setTimeout(() => {
                            btn.textContent = 'Archiv anzeigen';
                            btn.disabled = false;
                        }, 2000);
                        return;
                    }
                }

                // Nächstes Archive versuchen
                tryNextArchive(index + 1, tlds, hostAndPath, btn);
            },
            onerror: () => {
                // Bei Netzwerkfehler: Retry
                if (retryCount < config.retries) {
                    setTimeout(() => {
                        tryNextArchive(index, tlds, hostAndPath, btn, retryCount + 1);
                    }, 1000);
                } else {
                    // Nach mehreren Fehlern: Nächstes Archive
                    tryNextArchive(index + 1, tlds, hostAndPath, btn);
                }
            },
            ontimeout: () => {
                // Timeout: Nächstes Archive versuchen
                tryNextArchive(index + 1, tlds, hostAndPath, btn);
            }
        });
    }

    function findValidArchiveUrl(responseText, tld) {
        const regex = new RegExp(`https:\\/\\/archive\\.${tld}\\/([a-zA-Z0-9]{3,6})`, 'g');
        const allMatches = [...responseText.matchAll(regex)];

        const valid = allMatches.find(match => {
            const suffix = match[1];
            const invalidSuffixes = ['www', 'https', 'search', 'submit', 'help', 'api'];
            return !invalidSuffixes.includes(suffix.toLowerCase());
        });

        return valid ? valid[0] : null;
    }

    function openArchiveUrl(url) {
        if (window.innerWidth < 600 || /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
            // Mobile: In gleichem Tab öffnen
            window.location.href = url;
        } else {
            // Desktop: In neuem Tab öffnen
            window.open(url, '_blank', 'noopener,noreferrer');
        }
    }

    // CSS für bessere Animation
    const style = document.createElement('style');
    style.textContent = `
        @keyframes archiveButtonPulse {
            0% { transform: translateX(-50%) scale(1); }
            50% { transform: translateX(-50%) scale(1.1); }
            100% { transform: translateX(-50%) scale(1); }
        }

        #archive-button:active {
            animation: archiveButtonPulse 0.3s ease;
        }

        #archive-button:disabled {
            opacity: 0.7;
            cursor: not-allowed !important;
        }
    `;
    document.head.appendChild(style);
})();
6 „Gefällt mir“

Och nööö, ein ganz ganz pöses Addon mimimimi
Jetzt muss man beim Axel Springerverlag wieder Werbung mitgucken oder für Abo bezahlen… mimimi

Achso… ich war da letztes mal glaub vor… weiß nicht… also wenn, dann ist die Bild super als Test, ob der XYZ-Blocker funktioniert ^^

Wie kann man diese Doppelmoral hier deuten?

Es geht darum, die Paywall zu überwinden mit Tipps und Tricks wie man das am Effektivsten bewerkstelligen kann.
Als Begründung zur Umgehung steht die Anonymität der Bezahlung.

Und direkt zwischen den Artikel prangt der Werbebanner „Kein Bock auf Werbung?“
Das Hinterlässt einen Faden Geschmack!

Klar, bei Tarnkappe kann man auf über 6 Verschiedene Wege Spenden.
Davon sind aber nur bedingt manche Anonym.

1 „Gefällt mir“

Mit archive.is lassen sich ja softe Paywalls recht gut umgehen.

Aber was ist mit harten Paywalls, z. B. die vom Kicker?

https://www.kicker.de/aus-der-destillerie-ins-profigeschaeft-schweinfurt-coach-kleinhenz-im-portraet-1138473/artikel

Hat da jemand einen Tipp für mich parat?

Jo, auch die Werbeschleuder Golem.de ist da inzwischen recht gut dabei… Je mehr sie Ihre Arikel schützen, um so mehr hat man den Eindruck, dass es immer mehr gekaufte Beiträge werden…

Was mich aber am allermeisten an fast allen Paywalls stört:
mich interessieren oft nur einzelne Artikel. Die kann man aber nicht einzeln für z.B. 10 Cent kaufen… Entweder gibt es nur Abo, oder der einzelne Artikel kostet fast soviel wie der Monatspreis beim günstigsten Abo.

Dann block sie doch weg, geht doch ganz leicht.

Es geht um die Doppelmoral.

Ja ja, schon verstanden. Aber das müssen wir ja nicht hinnehmen. Warum soll Tarnkappe Geld verdienen, aber die Verlage nicht. Wird die eine Sache geblockt, wird es die andere auch.

weil der Unterschied ist, das du schmarotzen möchtest und Informationen ohne was zu geben. Man möchte einen einzelnen Artikel anonym kaufen und lesen. Das genau geht aber halt nicht. Also bleibt nur es zu umgehen. Sammeln wir Daten von dir? Nein, deine Kreditkartendaten, Namen, Adresse damit du einen Artikel lesen kannst? Sicherlich nicht.

F*ck! Ich dachte, ich könnte nächste Woche mit dem Dump einkaufen gehen?!

:cry: :laughing:

Addon funktioniert ganz normal. Gab erst heute neues Update

ja die 4.1.8.0 kam schon gestern zum Glück. müsste auch im Artikel drin stehen

ja, genau weil die US Verlage ihre Daten so gut sichern am liebsten anonym und per Crypto:-) ich sehe du hast mich verstanden

Genau, nur manche Spendenoptionen sind anonym. Aber bei denen steht es auch dabei.

Auf der GitFlic Site wurde vor 50 Minuten ein Update bekanntgegeben!

Installation

Laden Sie die neueste Version der xpi-Datei von GitFlic herunter, gehen Sie zu Downloads und installieren Sie das Add-on (oder ziehen Sie es von Ihrem Dateimanager überall auf einer Seite / Nummer in Firefox).
Sie können auch zu Tools > Add-ons (about:addons) > Erweiterungen > Einstellungen/Cogwheel - Installieren Sie Add-on aus Datei

Standardmäßig hat BPC begrenzte Host-Berechtigungen, aber Sie können sich dafür entscheiden, benutzerdefinierte Websites zu aktivieren (und auch Cookies/Block-Allgemeine Paywall-Skripte für nicht börsennotierte Websites zu löschen). Oder verlangen Sie einfach Host-Berechtigungen für die benutzerdefinierten Websites an, die Sie selbst hinzugefügt haben (oder auf klare Cookies (BPC-Symbol) klicken, um die Host-Berechtigung für die aktuelle Website zu erhalten).
Sie können auch die benutzerdefinierte Zusatzversion installieren (mit Host-Berechtigungen für alle Seiten).

Um den Zugriff auf die Zusatzoptionen/Einstellungen zu erleichtern, können Sie das Add-on-Symbol in der Symbolleistenerweiterungsmenü (Jigsaw Puzzle-förmiges Icon) hinzufügen/anken.
Minimaler Browserbedarf: Firefox 86+.

PS, obwohl das Add-on aus Mozillas Add-on-Store (AMO) (wegen DMCA Takedown Notice) entfernt wurde, ist es immer noch signiert und manuell auf Sicherheit von Mozilla geprüft (daher die Verzögerung bei der Unterzeichnung).

Wenn Sie die neueste Zip-Datei von GitFlic (mit Post-Release-Fixes) dauerhaft installieren möchten, verwenden Sie einen Firefox-Browser, der es erlaubt, unsignierte Add-ons wie Firefox Developer Portable (Go to about:config und setx xpinstall.signatures.required to false) oder LibreWolf (für beide keine automatischen Updates von Add-on) zu ermöglichen.
Sie müssen auch die Zip-Datei neu verpacken, damit sie keinen Ordner enthält (Standard auf Seiten wie GitHub).

Oder laden Sie ein temporäres Add-on in regulärem Firefox (gehen Sie zu:debugging’/runtime/this-firefox & load manifest.json aus dem ausgepackten (Master-Zip) Ordner).

Update

Add-on wird automatisch aktualisiert oder Sie können eine manuelle Überprüfung nach Updates durchführen (über:addons).
So oder so müssen Sie Host-Berechtigungen für neu unterstützte Websites zulassen (mindestens wird kein Update installiert).
Sie können auch nach Aktualisierung der Standortregeln beim Start (Opt-in) suchen; nur bis etwa 10 Tage nach der Fix-Veröffentlichung verfügbar.
Für neue Websites müssen Sie auch auf benutzerdefinierte Websites/Host-Berechtigungen für neue Domains einschließen (oder auf neue Release warten).

Android

Add-on wurde von Mozilla aus dem Add-on-Store (AMO) entfernt.

Mit Firefox 122+ (& Android 10+) können Sie dieses Add-on immer noch installieren/sende laden, indem Sie xpi-Datei der neuesten Version von GitFlic herunterladen (mit automatischen Add-on-Updates), wenn Sie das Debug-Menü aktivieren (Einstellungen > > Tippen Sie auf Firefox-Logo 5 mal > Zurück zu Einstellungen): Sie erhalten neue Menü-Element-InstallationInstall extension from file

Oder verwenden Sie die Firefox-Lekke Iceraven v2.13.2+ (manuelle Zusatz-Updates).
Sie können Iceraven manuell installieren/aktualieren oder die App FFUpdater verwenden

Oder wechseln Sie zu Quetta Browser (Chromium).
Sie können auch den Adblockerfilter/Nutzer verwenden (viel weniger unterstützte Seiten).

Chrom/Chrom

Besuchen Sie das Chrome-Repository auf GitFlic von Bypass Paywalls Clean.
Oder die neueste Version von zip oder crx-file von GitFlic manuell installieren

iOS/iPadOS

Verwenden Sie Adblocker mit benutzerdefiniertem (Content)filter & Benutzer-Rekript (Manager): Bypass Paywalls Clean Filter (Leseanleitung).

Obwohl Orion Browser die Installation dieses Add-ons unterstützt, funktioniert es nicht für viele Websites (ohne volle Unterstützung der WebExtensions API auf iOS/iPadOS).

(Quelle: gitflic.ru → https://gitflic.ru/user/magnolia1234)

Danke und jap. 4.1.8.3 ist die neuste und wieder per Autoupdate. die Welt ist wieder in Ordnung :heart_eyes:

Moin, leider finde ich nicht die Möglichkeit die eine PN zu schicken, vielleicht weil ich mich jetzt erst angemeldet habe.
Finde deinen Beitrag interessant and hätte Interesse an dem Script, würde mich freuen wenn du es sharest.

Beste Grüße

Für das Schreiben einer PN einfach auf den Namen klicken, siehe Screenshot oben, fertig!