← Alle Beiträge

Anleitungen

Dark Patterns abschalten: falsche Dringlichkeit, hinterhältige Checkboxen

„Nur noch 2 auf Lager." „12 Personen schauen sich das gerade an." Ein Countdown-Timer, der bei jedem Neuladen zurückspringt. Eine vorab angekreuzte Box, die eine Versicherung hinzufügt, nach der du nie gefragt hast. Das sind Dark Patterns — Interface-Tricks, die dich hetzen und überlisten sollen. Dieser Artikel zeigt, wie du die häufigsten mit CSS und JavaScript neutralisierst, damit du mit klarem Kopf einkaufen kannst.

Was als Dark Pattern zählt

Ein Dark Pattern ist eine UI-Entscheidung, die dem Unternehmen auf deine Kosten nützt, indem sie ausnutzt, wie Aufmerksamkeit und Voreinstellungen funktionieren. Die, die es auf einer Shopping-Seite zu entschärfen lohnt:

Du kannst eine Seite nicht davon abhalten, so gestaltet zu sein, aber du kannst bearbeiten, wie sie in deinem Browser dargestellt wird.

Einen falschen Countdown erkennen

Eine echte Frist ist für alle gleich und überlebt ein Neuladen. Eine falsche springt zurück. Schneller Test: Merk dir den Timer, lade die Seite neu, schau noch mal. Ist er zurück auf „05:00" gesprungen, ist es Theater. Öffne die DevTools, Elements-Panel, und finde das Element, dessen Text herunterzählt — notiere seine Klasse.

Falsche-Dringlichkeit-Widgets mit CSS verstecken

Der schnellste Fix ist, die Druck-Widgets ganz verschwinden zu lassen. Sie sind fast immer sauber abgetrennte, nach ihrem Zweck benannte Elemente:

/* Fake urgency, scarcity and social-proof widgets */
.countdown-timer,
.sale-timer,
.urgency-banner,
.stock-warning,
.low-stock,
.viewing-now,
.recently-viewed-count,
[class*="countdown" i],
[class*="urgency" i],
[class*="scarcity" i],
[class*="viewers" i],
[class*="people-viewing" i] {
  display: none !important;
}

Wie immer macht das i-Flag das Attribut-Matching Groß-/Kleinschreibung-unabhängig. Fang mit diesem Block an; er räumt den sichtbaren Lärm auf den meisten Shop-Seiten sofort weg.

Einen Countdown einfrieren statt verstecken

Manchmal willst du sehen, dass es ein Angebot gibt, aber nicht von einer tickenden Uhr gehetzt werden. Frier ihn ein: Stoppe das Skript, das ihn aktualisiert. Der grobe, zuverlässige Ansatz ist, die Timer-Funktionen zu neutralisieren, bevor das Skript der Seite startet, bei document_start:

// Freeze countdowns: defang the timers the page uses to tick
const realSetInterval = window.setInterval;

window.setInterval = function (fn, delay, ...args) {
  // Block fast-ticking timers (countdowns update ~every second)
  if (delay && delay <= 1000) {
    console.log('[dark-patterns] blocked a 1s interval');
    return -1;            // a harmless fake id
  }
  return realSetInterval.call(this, fn, delay, ...args);
};

Das ist absichtlich breit — es stoppt jedes Intervall im Sekundenbereich, was auf einer Produktseite fast immer ein Countdown ist. Friert es etwas ein, das du brauchst, verenge es, indem du fn.toString() vor dem Blockieren auf Schlüsselwörter wie countdown prüfst.

Eine sanftere Alternative: Lass den Timer laufen, aber pinne seinen angezeigten Text einmal fest und stoppe dann Updates an diesem Knoten:

// Pin the countdown text and stop it changing
const timer = document.querySelector('[class*="countdown" i]');
if (timer) {
  const frozen = timer.textContent;
  new MutationObserver(() => {
    if (timer.textContent !== frozen) timer.textContent = frozen;
  }).observe(timer, { childList: true, subtree: true, characterData: true });
}

Häkchen aus hinterhältigen Add-on-Boxen entfernen

Das teuerste Dark Pattern ist die vorab angekreuzte Checkbox: Versandversicherung, ein „auf den nächsten Euro aufrunden", eine wiederkehrende Mitgliedschaft. Sie ist standardmäßig angekreuzt und so formuliert, dass du darüber hinwegliest. Entferne die Häkchen mit JavaScript nach dem Laden der Seite:

// Un-tick pre-checked add-on checkboxes
function unchargeMe() {
  document.querySelectorAll('input[type="checkbox"]:checked')
    .forEach(box => {
      const label = (box.closest('label')?.textContent
        || box.parentElement?.textContent || '').toLowerCase();

      // Only touch boxes that smell like a paid add-on
      if (/insurance|protection|warranty|donation|round up|express|priority|membership|subscribe/.test(label)) {
        box.checked = false;
        // Fire events so the page recalculates the total
        box.dispatchEvent(new Event('change', { bubbles: true }));
        box.dispatchEvent(new Event('input', { bubbles: true }));
        console.log('[dark-patterns] un-checked:', label.trim().slice(0, 60));
      }
    });
}

unchargeMe();
// Re-run when the cart re-renders
new MutationObserver(unchargeMe)
  .observe(document.body, { childList: true, subtree: true });

Die change- und input-Events sind wichtig — ohne sie kann die Seitensumme das Add-on noch enthalten, obwohl die Box ausgekreuzt aussieht. Prüfe immer, ob sich der Preis aktualisiert hat.

Confirmshaming-Formulierungen entschärfen

Text lässt sich nicht leicht umschreiben, aber du kannst Confirmshaming davon abhalten, seinen Job zu tun: Mach die Ablehnen-Option so sichtbar und neutral wie die Annehmen-Option. Stylt eine Seite „Nein danke" als winzigen grauen Text, restyle es:

/* Make the decline link a normal, readable button */
.modal a[class*="decline" i],
.modal button[class*="dismiss" i],
[class*="confirm-shame" i] {
  font-size: 1rem !important;
  color: inherit !important;
  text-decoration: underline !important;
  opacity: 1 !important;
}

Mit JustZix abgrenzen

Manche dieser Regeln sind aggressiv — das Blockieren von Intervallen im Sekundenbereich könnte ein live aktualisierendes Widget treffen, das du tatsächlich willst. Also grenz sie ab. Erstelle einen Ordner namens „Anti-Dark-Patterns" und füge eine Regel pro Shopping-Seite hinzu, die du nutzt, jede mit einem engen URL-Muster. Schalte den ganzen Ordner aus, wenn du nicht einkaufst. Du bekommst einen ruhigeren Checkout ohne Nebenwirkungen anderswo.

Siehe auch

Einkaufen sollte eine Entscheidung sein, keine Reaktion. Installiere JustZix, füge den CSS-Block oben ein und sieh zu, wie der künstliche Druck von jeder Produktseite verschwindet, die du besuchst.

Bewerte diesen Beitrag

Noch keine Bewertungen — sei der Erste.

Probiere es selbst aus

Installiere JustZix und füge ein beliebiges Snippet aus diesem Artikel ein. Zwei Minuten von null bis zu einer funktionierenden Regel auf allen deinen Geräten.

JustZix holen

Funktionen · So funktioniert es · Beispiele · Anwendungsfälle