Jemand fragte im März 2025 auf r/Domains, wie sich alle Domains ermitteln lassen, die gerade auf die eigene Hauptseite weiterleiten. Der Thread hat keine Antworten. Ein Unternehmen, das Hunderte Domains überwacht, fragte 2024 auf r/selfhosted etwas Ähnliches, und die beste Antwort räumte die Lücke ein, statt sie zu schließen: für die Überwachung von WHOIS-Änderungen, hieß es, “the situation is even worse”. Das Nächstliegende zu einer kanonischen Antwort ist eine Server-Fault-Frage von 2013, deren akzeptierte Antwort lautet, man solle “double check your current DNS and your future DNS, just to be sure”.

Unterdessen bauen Leute das Werkzeug immer wieder neu. Bei Uptime Kuma liegen Anfragen nach einer Prüfung des Domain-Ablaufs seit November 2021, und GitHub liefert stetig Nachschub an Einzelstück-Klonen.

Die Frage verdient eine bessere Antwort als eine Tabelle. Hier ist ein Skript, das eine gibt, und eine zweite Spalte, die entscheidet, was Sie mit der Ausgabe tatsächlich anfangen.

Warum das Dashboard es Ihnen nicht sagen kann

Cloudflares Oberfläche ist nach Zonen geordnet. Alles, was hier wissenswert ist, ist eine Eigenschaft der Menge von Zonen, und dafür gibt es keinen Bildschirm.

Die Rohdaten, die es beantworten würden, sind Enterprise-only: Logpush führt Free, Pro und Business als Nein. Statistiken pro Regel kamen ebenfalls nie — ein Feature-Request für Page-Rule-Statistiken wurde im Mai 2017 eröffnet, von seinem Autor zweimal erneut angestoßen und im Juni 2025 geschlossen, ohne umgesetzt zu werden.

Die domainübergreifende Sicht ist also etwas, das Sie sich selbst zusammenstellen. Die gute Nachricht: die API gibt Ihnen die Liste kostenlos.

Beim Konto anfangen, nicht bei Ihrer Tabelle

Die Liste der Domains, von denen Sie glauben, sie zu besitzen, und die Liste, die Cloudflare tatsächlich bedient, sind verschiedene Listen, und der Unterschied ist der erste Befund jeder Prüfung.

curl -s -H "Authorization: Bearer $CF_API_TOKEN" \
  "https://api.cloudflare.com/client/v4/zones?per_page=50&page=1" \
| jq -r '.result[] | "\(.name)\t\(.status)"'

Der status einer Zone ist initializing, pending, active oder moved. Alles, was nicht active ist, ist für sich ein Befund: eine pending-Zone ist eine Domain, deren Nameserver beim Registrar nie umgestellt wurden — also hat jede Regel, die Sie dafür geschrieben haben, kein einziges Mal gegriffen. Bei einem in Batches aufgebauten Portfolio ist das der lange Schwanz, vor dem das Runbook warnt, der Monate später auftaucht.

Achten Sie auf die Paginierung. Der Endpunkt blättert, und ein Portfolio von dreihundert kommt nicht in einer Antwort — zählen Sie page hoch, bis weniger Zeilen zurückkommen, als Sie angefordert haben.

Was zu prüfen ist, und warum jede Prüfung ein anderes Scheitern findet

Drei Fragen, drei verschiedene Arten, auf die eine Domain still kaputt sein kann.

Antwortet sie überhaupt? Eine tote Domain und eine, die falsch antwortet, sehen in einer Tabelle gleich aus und im Browser überhaupt nicht.

Führt sie dorthin, wo Sie denken? Eine Weiterleitung, die funktioniert und auf die letztjährige Landingpage zeigt, ist schlimmer als eine kaputte, weil nichts Sie je warnen wird.

Ist das Zertifikat aktuell? Cloudflares Universal-SSL-Zertifikate “have a 90-day validity period” und “the auto renewal period starts 30 days before expiration”. Lesen Sie das genau, bevor Sie eine Schwelle setzen: bei einer gesunden geproxyten Domain sind weniger als 30 Tage Restlaufzeit normal, kein Alarm. Was zählt, ist ein bereits abgelaufenes Zertifikat, oder eines auf einer Domain, die Cloudflare verlassen hat und die niemand erneuert.

Und das Scheitern, das keine HTTP-Prüfung findet: die Domain hat schlicht aufgehört zu existieren. Der Betreiber von Pinboard sah sie im Juni 2026 auf NXDOMAIN laufen, bei eingeschalteter automatischer Verlängerung — “something went wrong, and I didn’t get an email from the registrar about it”. Automatische Verlängerung ist der Rat, den alle geben, und das, was bereits versagt hatte, als es jemandem auffiel.

Die zweite Spalte: was sich zu reparieren lohnt

Dreihundert Zeilen Befunde sind keine Antwort, sondern ein neues Problem. Niemand repariert dreihundert Domains. Sie reparieren die, die Gewicht tragen, und herauszufinden, welche das sind, bedeutete bis vor Kurzem ein Abonnement.

Das hat sich geändert. Ahrefs’ Domain-Rating-Endpunkt ist jetzt offen, und die Dokumentation ist eindeutig: “Requests to this endpoint are free and do not consume any API units.”

Heute geprüft, antwortet er ohne Abonnement:

$ curl -s "https://api.ahrefs.com/v3/public/domain-rating-free?target=cloudflare.com&output=json"
{"domain_rating": {"domain_rating": 94.0, "license": "...", "warning": "..."}}

Drei Bedingungen kommen mit, und alle drei gehören in den Text statt in eine Fußnote.

Ab dem 10. August 2026 ist ein kostenloser Schlüssel nötig. Der Endpunkt antwortet derzeit unauthentifiziert und sagt es selbst, in einem warning-Feld in seiner eigenen Antwort: “Unauthenticated access to this endpoint will be removed on 2026-08-10.” Das Skript unten schickt bereits einen Schlüssel mit. Einen zu erzeugen ist kostenlos, und es jetzt zu tun kostet weniger, als das Skript in drei Wochen zu debuggen.

Namensnennung, wenn Sie die Zahl anzeigen. Die Lizenz gewährt das Recht, DR-Daten zu “use, display, publish or integrate”, und verlangt den Hinweis “Domain Rating by Ahrefs” mit einem funktionierenden Link, der “shall not be hidden, obscured or removed”. Ein privater Terminalbericht ist das eine; ein Dashboard, das Ihr Team liest, ist ein Ort, an dem diese Zeile stehen muss.

Ihre eigenen Domains, in zivilem Tempo. Dieselbe Lizenz verbietet das Sammeln von DR-Daten “in bulk or systematically”. Das Portfolio, das Ihnen gehört, einmal und mit Pause zwischen den Anfragen abzugehen, ist die Nutzung, für die es den Endpunkt gibt. Fremde Domains abzugrasen, um einen DR-Datenbestand aufzubauen, ist das, was er verbietet. Zehn aufeinanderfolgende Anfragen mit 0,3 Sekunden Abstand liefen ohne Beanstandung durch; die Limits sind nicht dokumentiert und Ahrefs behält sich vor, sie ohne Ankündigung zu ändern — also drosseln und nicht annehmen, die Decke sei hoch.

Ein Vorbehalt zur Metrik selbst: DR ist Ahrefs’ Zahl, nicht Googles. Sie ist eine gute relative Skala dafür, welche dieser Domains mehr Gewicht trägt als die anderen, und sie sagt nichts über Rankings.

Das Skript

Braucht curl, openssl und jq. Die Datumsrechnung ist GNU; unter macOS date -j -f '%b %d %T %Y %Z' verwenden.

#!/usr/bin/env bash
set -uo pipefail
: "${AHREFS_KEY:?export AHREFS_KEYkostenloser Schlüssel von ahrefs.com}"

printf '%-34s %-5s %-32s %-6s %s\n' DOMAIN CODE DESTINATION CERT DR

while read -r domain; do
  [ -z "$domain" ] && continue

  head=$(curl -sI --max-time 10 "https://$domain/" 2>/dev/null)
  code=$(printf '%s' "$head" | awk 'NR==1{print $2}')
  dest=$(printf '%s' "$head" | awk 'tolower($1)=="location:"{print $2}' | tr -d '\r')

  until=$(echo | openssl s_client -servername "$domain" -connect "$domain:443" 2>/dev/null \
          | openssl x509 -noout -enddate 2>/dev/null | cut -d= -f2)
  days=""
  [ -n "$until" ] && days=$(( ( $(date -d "$until" +%s) - $(date +%s) ) / 86400 ))

  dr=$(curl -s --max-time 10 -H "Authorization: Bearer $AHREFS_KEY" \
       "https://api.ahrefs.com/v3/public/domain-rating-free?target=$domain&output=json" \
       | jq -r '.domain_rating.domain_rating // "-"')

  printf '%-34s %-5s %-32s %-6s %s\n' \
    "$domain" "${code:-DEAD}" "${dest:--}" "${days:+${days}d}" "$dr"
  sleep 0.3
done < domains.txt

Ein echter Lauf, gegen diese Seite und zwei weitere, am 22. Juli 2026:

DOMAIN                             CODE  DESTINATION                      CERT   DR
www.301.sh                         301   https://301.sh/                  89d    8
301.sh                             200   -                                89d    8
spintax.net                        200   -                                85d    56
this-domain-does-not-exist-9f3.com DEAD  -                                       0

Vier Zeilen und vier verschiedene Zustände. Die www-Form leitet auf die Apex-Domain, was sie soll. Zwei Domains antworten direkt. Die letzte löst gar nicht auf, und das Skript sagt DEAD, statt eine Meinung dazu vorzutäuschen.

Beachten Sie die Zertifikatsspalte: 89 und 85 Tage. Das ist Universal SSL am Anfang seiner 90-tägigen Laufzeit, und so sieht gesund aus. Eine Zeile mit 4d auf einer Domain, die niemand erneuert, ist etwas anderes, und eine Zeile ganz ohne Zahl heißt, dass der Handshake nie zustande kam.

Zwei Formen, die in dieser Auswahl fehlen und die man erkennen sollte. Ein 522 heißt, Cloudflare hat geantwortet und Ihr Origin nicht, Besucher bekommen also eine Fehlerseite dort, wo Sie eine Weiterleitung vermuten. Und eine 200 auf einer Domain, die weiterleiten soll, heißt, die Weiterleitung ist schlicht weg: eine gelöschte Regel, oder eine, die nie griff, weil die Zone noch pending ist.

Die Regel, die aus der Tabelle Entscheidungen macht

nein

ja

nein

ja

nein

ja

Antwortet sie?

DR über null?

Führt sie dorthin,
wo Sie denken?

Auslaufen lassen

Zuerst reparieren:
Links zeigen ins Leere

In Ruhe lassen

Wofür jede Domain da ist

Sortieren Sie nach kaputt zuerst, dann nach DR absteigend, und der Kopf dieser Liste ist Ihr Nachmittag. Eine tote Domain mit echter Autorität ist die teuerste Zeile der Tabelle: jeder Link, der auf sie zeigt, ist Wert, den Sie bereits bezahlt haben und gerade wegwerfen. Eine tote Domain mit einem DR von null ist eine Verlängerungsrechnung, die Sie einstellen können.

Diese zweite Schlussfolgerung ist so viel wert wie die erste, und keine Gesundheitsprüfung allein kommt dorthin.

Was ein Durchgang nicht liefert

Er liefert eine Momentaufnahme, und Portfolios gehen nicht an dem Tag kaputt, an dem Sie hinsehen.

Ein Zertifikat läuft in neunzig Tagen ab. Die automatische Verlängerung eines Registrars scheitert an einem Dienstag, ohne Ton. Eine Regel wird auf einer Zone bearbeitet, die seit einem Jahr niemand geöffnet hat, und die Weiterleitung landet auf der falschen Seite, während sie eine tadellose 301 zurückgibt. Das Skript oben findet all das — beim nächsten Mal, wenn sich jemand erinnert, es laufen zu lassen.

Das ist der Unterschied zwischen einer Prüfung und einem System, und der ehrliche Ort, um zu sagen, wofür 301.st da ist: es lässt das fortlaufend über das Portfolio laufen und meldet, wenn sich eine Zeile ändert. Für zwanzig Domains sind ein Cron-Eintrag und das Skript oben wirklich genug, und dort sollten Sie anfangen.

Domain Rating by Ahrefs.