Whole Antidetect Catalog Donut Browser

Catalogue · State

Dead links other registries still list

DEAD · 5

The link check returned 400 or worse, did not complete at all, or the repository has been untouched for more than three years. Listed on purpose: an entry marked dead is more useful than a live-looking link nobody checked.


The rule that sets it, second edition: the last HTTP check returned 400 or worse, or did not complete — or the repository has no push within 1095 days.

Tested first, because an unreachable URL cannot be rescued by any other field. All thresholds and the endpoints they read

Across sections: 03 2 · 06 1 · 07 2

LicenceN/A
HTTP502
Checked2026-08-14
StateDEAD
Silent—

Are You Headless

DEAD[DEAD]

Antoine Vastel's headless-detection page — cited in dozens of tutorials and, at this field check, returning 502.

Still listed by other registries

Source

Evidence

Why DEAD: The link check returned 502 at 2026-08-14T09:12:00Z. DEAD is tested first.

FieldValue at this printing
http_status502
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://arh.antoinevastel.com/bots/areyouheadless

Bad Gateway. No earlier observation in this register, so no down-since date is printed.

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

Listed precisely because other registries still list it without checking. A dead entry that is marked dead is more useful than a live entry nobody verified. — ED.

See also · superseded by · alternatives

LicenceN/A
HTTPno response
Checked2026-08-14
StateDEAD
Silent—

deviceinfo.me

DEAD[DEAD]

Formerly a broad attribute dump; the host did not complete a connection at this field check.

Still listed by other registries

Source

Evidence

Why DEAD: The link check returned no response at all at 2026-08-14T09:12:00Z. DEAD is tested first.

FieldValue at this printing
http_statusno response
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: HEAD https://www.deviceinfo.me/

Connection failure — no HTTP response at all, from two attempts.

No repository, so there is no API field to re-read from a browser. A cross-origin liveness check has to be made server-side; this entry's status comes from the register's own sweep.

See also · superseded by · alternatives

LicenceApache-2.0
Pushed2023-01-08
Release—
Stars2.2k
StateDEAD
Silent1314 d

ClientJS

DEAD[DEAD]

An early general-purpose fingerprinting library, still linked from tutorials written after it stopped.

Source

Evidence

Why DEAD: pushed_at = 2023-01-08 — 1314 days, past the 1095-day outer threshold.

FieldValue at this printing
pushed_at2023-01-08
archivedfalse
latest_release—
license.spdx_idApache-2.0
stargazers_count2200
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: GET https://api.github.com/repos/jackspirou/clientjs

unauthenticated · 60 req/hr

A live read does not change what is printed above it. The site records that you ran it; what GitHub returned is not kept. The printed state moves only when the register is swept and a new printing is issued. raw JSON

See also · superseded by · alternatives

LicenceNO LICENCE DECLARED
Pushed2021-08-14
Release—
Stars40
StateDEAD
Silent1826 d

nginx-http2-fingerprint

DEAD[DEAD]

Reference implementation of HTTP/2 fingerprinting inside nginx. Read it; do not deploy it.

No licence declared · Listed as historical

Source

Evidence

Why DEAD: pushed_at = 2021-08-14 — 1826 days, past the 1095-day outer threshold.

FieldValue at this printing
pushed_at2021-08-14
archivedfalse
latest_release—
license.spdx_idnull (none declared)
stargazers_count40
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: GET https://api.github.com/repos/Xetera/nginx-http2-fingerprint

unauthenticated · 60 req/hr

A live read does not change what is printed above it. The site records that you ran it; what GitHub returned is not kept. The printed state moves only when the register is swept and a new printing is issued. raw JSON

LicenceNO LICENCE DECLARED
Pushed2019-07-09
Release—
Stars521
StateDEAD
Silent2593 d

p0f

DEAD[DEAD]

Classic passive OS fingerprinting from TCP/IP behaviour. The technique predates all of this and still works.

No licence declared · Listed as historical

Source

Evidence

Why DEAD: pushed_at = 2019-07-09 — 2593 days, past the 1095-day outer threshold.

FieldValue at this printing
pushed_at2019-07-09
archivedfalse
latest_release—
license.spdx_idnull (none declared)
stargazers_count521
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: GET https://api.github.com/repos/p0f/p0f

unauthenticated · 60 req/hr

A live read does not change what is printed above it. The site records that you ran it; what GitHub returned is not kept. The printed state moves only when the register is swept and a new printing is issued. raw JSON

See also · superseded by · alternatives


This is the page the link sweep exists for

Test pages rot faster than repositories, and the anti-detect field has an unusually long memory: a detection page written years ago gets cited in a tutorial, the tutorial gets quoted in an answer, the answer gets copied into a list, and the list gets forked. By the time the host stops answering, the address has more inbound references than most live projects. Nobody in that chain ever re-requests it.

So this register requests it, records the status code and the instant, and prints both. That is the entire mechanism, and it is the one capability no undated list in this category has.

Two different things produce DEAD, and they are not the same finding

The first is an address that failed: 400 or worse, or a request that did not complete at all. That clause is tested before every other rule in the rubric, because an unreachable address cannot be rescued by a healthy licence field or a recent tag. The second is a repository whose liveness field is past 1095 days — three years, which is where this register stops describing a repository as merely quiet.

Neither is an obituary. Code that has not been touched in three years may still compile and a technique described a decade ago may still be entirely current; what has stopped is anyone attending to it. Where an address failed, the honest thing to do is check it yourself: it is printed on the entry page with the status beside it, and if it answers for you, this register is wrong and the correction is an errata entry against a named edition.


Questions about the DEAD mark

Answered from the rule printed above, and from the fields it reads.

Why does this registry list dead links at all?

Because deletion loses the finding. The entries here are still recommended by lists that do not check, and a row carrying a status code and a check timestamp is more useful to a reader than a silent omission — or than a live-looking link nobody has requested in years.

What makes an entry DEAD in this registry?

Either an address that returned 400 or worse or did not complete at all at the field check, or a repository whose liveness field is more than 1095 days before it. The first clause is tested before every other rule in the rubric.

The link works for me. Is the registry wrong?

Possibly, and that is a usable answer rather than an embarrassing one. The status, the endpoint and the instant of the check are all printed on the entry page precisely so the claim can be falsified. A host that refuses the sweep and answers a browser is a real and common case, and it is recorded as a refusal on the field log rather than hidden.


Every row on this page is a project someone once chose, and the state beside it is the part that was invisible at the moment of choosing. Donut Browser is filed in section 01 under the same rule, with the same fields printed against it and no exemption of any kind: an open-source anti-detect browser under AGPL-3.0, with engine-level fingerprint spoofing through the Wayfern Chromium fork rather than injected JavaScript, a local REST API and MCP server on your own machine, self-hostable sync, and a pre-launch gate that refuses to start a profile when the proxy's exit geography contradicts the profile's fingerprint. If it stops shipping, this rubric marks it without anyone's permission.

Download Donut Browser

curl -fsSL https://donutbrowser.com/install.sh | sh

macOS · Windows · Linux · Nix. Desktop only. Source, AGPL-3.0 · Its entry · The rubric · The keepers' disclosure

Other states: ACTIVE · SEMI · NRND · WITHDRAWN · ARCHIVED