Whole Antidetect Catalog Donut Browser

Catalogue · Section 07 · Entry

JA3 (Salesforce)

ARCHIVED

JA3 (Salesforce) is a Python project catalogued in section 07 of this register. The original TLS fingerprint. Archived by Salesforce; the format is still everywhere. It reads ARCHIVED. The maintainer set the archive flag themselves, and in this rubric a maintainer's own statement outranks every date rule there is.

https://github.com/salesforce/ja3


The fields this state was derived from

FieldValue at this printing
pushed_at —
archived true
archived_at 2025-05-01
latest_release —
license.spdx_id BSD-3-Clause
stargazers_count 3100
http_status 200
fetched_at 2026-08-14T09:12:00Z
endpoint GET https://api.github.com/repos/salesforce/ja3
rubric_edition 2nd, in force since 2026-08-14
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

Why it reads ARCHIVED

archived = true, set 2025-05-01. A maintainer's own statement outranks every date rule.

The maintainer closed it. Historical reference only.

Under the superseded first edition

Unchanged: the first edition read ARCHIVED from the same fields.

The rubric in force · The superseded first edition · Errata leaf


What JA3 (Salesforce) actually does

The original TLS fingerprint format. The specific hash construction is superseded, but it is still what a great deal of deployed detection and a great deal of tooling speaks.

What JA3 (Salesforce)'s maintenance signals mean

archived reads true, set 2025-05-01. This is the only measured field in the rubric that outranks every date rule, and it outranks them for a good reason: every other signal here is the register inferring intent from behaviour, while this one is the maintainer stating intent directly. When the two disagree, the statement wins.

An archived repository is readable, forkable and permanently frozen. Nothing will be merged into it, and no advisory affecting it will be answered there. That makes it a reference rather than a dependency — genuinely valuable as the former, and a liability as the latter. The last push date is still printed above, because the interval between the last commit and the archive flag is itself informative about how the project ended.

No release was captured for this entry, which this register records as unknown rather than as none. The distinction matters more than it looks: a project with no tags and a project whose tags the sweep failed to read produce the same blank cell, and printing them as the same fact would be the register asserting something it has not measured.

Where JA3 (Salesforce) sits in this catalogue

JA3 (Salesforce) is filed in section 07, network, tls & http fingerprint tooling, whose scope is this: The layer below JavaScript: TLS ClientHello and HTTP/2 fingerprinting, impersonating clients, and the passive tooling that reads them. An entry sits in exactly one section here. Where a project could defensibly go in two, it is placed where a reader would look for it first rather than where it fits most tidily, and that is an editorial decision rather than a measured one.

Filed beside it in the same section: JA4+ (ACTIVE), JA4+ explainer (ACTIVE), JA3 origin writeup (ACTIVE). Comparing an entry against its own section-mates is more informative than comparing it against the catalogue as a whole, because everything in a section is answering roughly the same question and the differences left over are the ones that matter.

It is published under BSD-3-Clause, alongside the rest of the BSD-3-Clause entries in this register, and it sits with everything else currently marked ARCHIVED. Read those two facets together: a permissively licensed project that stopped shipping is not a safer dependency than a copyleft one that did not, and a filter on one axis alone will tell you the wrong thing.

This register records that JA4+ supersedes JA3 (Salesforce). Supersession here is declared, never inferred: it is printed only where a project or its author says so, because "newer" and "replaces" are not the same relation and treating them as one is how a list starts recommending rewrites nobody asked for.

The JA3 (Salesforce) relations page sets every declared edge side by side on licence, push date, release cadence and derived state.

What to settle before you adopt JA3 (Salesforce)

The repository is archived by its corporate owner, which is a maintainer statement and outranks every date rule in this register's rubric. The format outliving its reference implementation is the situation to plan around.


See also

Relation Entry State Last push
superseded by JA4+ ACTIVE 2026-07-21

Full comparison of JA3 (Salesforce) and its alternatives


Questions readers ask about JA3 (Salesforce)

Answered from this entry's own fields, at the field check printed above and at no other instant.

Is JA3 (Salesforce) still maintained?

At the 2026-08-14 field check this register read the release date as — and the archive flag as true, and the rubric in force turned those into ARCHIVED. The maintainer closed it. Historical reference only. The clause that fired is printed on this page, so you can check the arithmetic rather than take the word.

What replaced JA3 (Salesforce)?

JA4+, and only because that succession is declared rather than guessed. This register never infers that one project replaces another from dates alone. The comparison table prints both on the same fields.

What licence is JA3 (Salesforce) under?

BSD-3-Clause, read from the repository's own licence metadata at the field check rather than from a README badge. Other BSD-3-Clause entries are grouped together, and the no-licence-declared group is worth a look before you assume any project here carries a grant.

Where does this status come from?

From one sweep, recorded with the instant it ran. The raw fields, the endpoint they were read from, the fetch timestamp and the rubric edition in force are all printed on this page, and the same row is in the CC0 data files in JSON and CSV. Recompute the state from those columns and this page must agree with you; where it does not, the register is wrong.


Section 07 is the half of a fingerprint that JavaScript cannot reach, and a browser-shaped page surface over a tool-shaped handshake is a contradiction that no amount of navigator patching fixes. Donut Browser is a real browser rather than an impersonating client, which resolves that layer by not having the problem — and it adds profile-level proxy handling with a launch gate that checks the exit's geography against the profile before anything starts.

Download Donut Browser

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

macOS (DMG, Homebrew cask donut), Windows (installer and portable), Linux (deb, rpm, AppImage, with APT and RPM repositories at repo.donutbrowser.com), and a Nix flake. Desktop only — there is no mobile build target. Ten shipped languages. Source, AGPL-3.0 · its own entry, judged by the same rubric · the keepers' disclosure.