Accuracy notes
-
RDAP is authoritative:
404means the name is not registered. -
WHOIS is text matching. The per-registry needle from
whois.jsonis tried first, then generic markers. Anything unrecognised isUNKNOWNrather than a guess. -
Needle matching is negation-aware. auDA’s availability service answers
AvailableorNot Availableand the bundled needle for.auis “Available”, so a plain substring test reports every taken.audomain as free. Matches preceded by “not”/“no”, or attached as in “unavailable”, do not count. -
Four registry quirks are handled explicitly, because each one otherwise reads as a registration: answers that echo the queried name back before saying “no object found” (
.sr,.fj), answers for a TLD the server does not serve (.tattoo,.photo), non-RDAP error bodies returned with HTTP 200 (.sn), and answers describing the parent zone instead of the name asked about (foo.ernet.in->ernet.in). -
Some registries answer nobody:
.liand.qarefuse public WHOIS and have no RDAP, and a few bundled WHOIS hosts no longer exist. Those come backUNKNOWNwith the reason attached. -
Large sweeps get rate-limited.
dspaces itself per host, backs off on 403/429, and stops querying a server that has refused it six times in a row (retrying it after 30s). Identity Digital runs ~250 gTLDs behind one RDAP endpoint with a strict quota, so a single--tld allsweep will leave some of those unresolved; re-run just those later:ds apple --tld "$(sed 's/^apple\.//' unknown.txt | paste -sd, -)"
These pages are generated from the project README, so they never drift from what ships with the binary.