Why it was built
Two clients can reach the same page and expose different identities. A familiar browser profile at the JavaScript layer may still differ in rendering, automation observations, or transport behavior. Comparing several separate fingerprint dumps makes those differences difficult to track.
TracePrint puts Client A and Client B through the same capture workflow and presents the evidence side by side. It is a comparison laboratory for investigating where clients differ, rather than a promise of universal detection or reliable evasion.
What it observes
| Layer | Evidence | Interpretation boundary |
|---|---|---|
| Browser identity | Navigator, screen, locale, hardware features, window and worker identity | Exposed values depend on environment and browser version. |
| Rendering | Canvas, WebGL, audio, and font-related fingerprints | A rendering difference does not explain a server decision by itself. |
| Automation | Browser-control artifacts and runtime observations | DevTools and automation can produce overlapping observations. |
| Transport | Imported TLS, JA3, JA4, and HTTP/2 reports | The hosted edition does not directly observe the client’s original TLS handshake. |
| Consistency | Field-level differences and cross-context comparisons | Agreement across tested fields does not prove that all signals agree. |
Architecture
A session creates two independent capture links. Each client records browser-side evidence. Optional transport reports from tls.peet.ws are imported into the corresponding capture. TracePrint compares fields, highlights consistency findings, and exports JSON.
The implementation uses React, Vite, and TypeScript, with Cloudflare Pages Functions and D1 for sessions. Anonymous sessions expire after 24 hours. Owner and capture capabilities are held in URL fragments. The repository includes the implementation and deployment instructions.
Cloudflare terminates incoming TLS before Pages Functions receive a request. The hosted workflow therefore compares imported transport reports, rather than claiming to capture the original ClientHello itself.
How to interpret the result
The useful output is the underlying evidence and the differences between controlled captures. TracePrint’s summary score starts at 100 and applies its implemented penalties. It is not a universal bot-detection score or a CDP score.
Runtime and browser-control observations are evidence, not proof of automation. Opening DevTools can influence observations, while some automation configurations may not trigger the checks. Start with a specific question, hold other variables steady, and retain the capture export alongside your notes.
This page documents the project’s implemented scope from its public repository. It does not report a new measured benchmark or a vendor bypass result.
Limitations
- Checks depend on the browser version, environment, and enabled browser-control features.
- A clean capture does not establish that a client is indistinguishable from an ordinary browser.
- A detected observation can have more than one explanation.
- Transport analysis in the hosted architecture depends on imported reports.
- The comparison covers implemented checks, not every signal a production anti-bot system might use.
Reproduction
Use a local environment and two clients you control. Clone the repository and install its dependencies:
git clone https://github.com/Logesh08/traceprint.git
cd traceprint
npm install
npm run pages:dev
The full Pages environment uses Wrangler with a persistent local D1 binding and initializes its schema when the first session is created. The frontend-only workflow is npm run dev. Use the full Pages environment for session-backed captures. See the project README for current setup requirements.
Record the clients, versions, changed variables, and exported evidence. A repeatable comparison is more useful than an isolated score. The source and full local workflow are available from the repository.
Try the hosted lab
The TracePrint live demo provides the hosted capture and comparison workflow. Transport evidence is imported in this deployment, as described above.
Source and license
TracePrint on GitHub · MIT license. Created by Logesh Krishna.
