Repository navigation
fpcheck reports a client's JA3, JA4, JA4H and Akamai HTTP/2 fingerprints by terminating TLS itself and parsing the raw ClientHello and HTTP/2 frames — then diffs them against a bundled reference browser. Run it yourself as a scriptable, self-hostable alternative to closed SaaS fingerprint testers.
Highlights
- Turnkey self-hosting. New
Dockerfile(distroless, static binary),docker-compose.yml, and a one-liner quickstart. A release workflow publishes the image toghcr.io/north-web-dev/fpcheckon each tag. - Host it on a domain. New optional
serve --cert/--keyflags serve a real certificate; the README documents the TCP/SNI-passthrough reverse-proxy setup (fpcheck must terminate TLS itself — a TLS-terminating HTTP proxy would fingerprint the proxy, not the visitor). - HTTP/2 shutdown fix. The server now sends a GOAWAY frame after each response, so clients see a clean shutdown instead of a truncated connection (previously
curl --http2returned exit 56 andfpcheck runfailed even though the body arrived). Covered by a new regression test. - README polish. One-line definitions of each fingerprint, a Docker quickstart, and real captured sample responses from
curl --http2and from Chrome 151 (showing GREASE preserved and JA4 stable where JA3 is not).
Verify
docker build -t fpcheck . && docker run --rm -p 8443:8443 fpcheck
curl -sk --http2 https://127.0.0.1:8443/api/all
Build + go vet + go test ./... -race all green.
Full changelog: v0.1.0...v0.2.0