browserhttp
client
Pure-Go http.Client presenting a Chrome TLS fingerprint via uTLS. CGO=0.
LICENSE=BSD-3-ClauseCGO_ENABLED=0A pure-Go http.Client with a real Chrome TLS fingerprint (uTLS) โ bypass anti-bot 403s, no host web view.
$ go get github.com/go-browserhttp/browserhttp@latest $ go get github.com/go-browserhttp/gitcorsproxy@latest
go-browserhttp is a pure-Go, CGO_ENABLED=0 http.Client that presents a real Chrome TLS fingerprint via uTLS. Many sites 403 non-browser clients based largely on the TLS ClientHello; mimicking Chrome's ciphers, extensions and curves โ plus a browser User-Agent and a warmed cookie jar โ lets a plain Go client reach public endpoints with no host web view. Identical on macOS, Linux and Windows.
Construct a client and issue a request that looks like Chrome:
c := browserhttp.NewClient(30 * time.Second)
resp, err := c.Get("https://www.reddit.com/r/golang/hot.json")The single module in the org today, mirrored from the live GitHub repo.
browserhttp
clientPure-Go http.Client presenting a Chrome TLS fingerprint via uTLS. CGO=0.
gitcorsproxy
proxyA CORS reverse proxy for git smart-HTTP, so a Go/wasm git client in a browser can reach remotes that speak the protocol correctly and send no Access-Control-Allow-Origin โ GitHub, a bare Forgejo. It forwards the git bytes both ways and adds the headers, scoped to an explicit origin list. It stores nothing: the browser holds the user's token and sends it per request, the proxy relays it and forgets it. Standard library only, CGO=0, SSRF-guarded.
Pure Go with CGO_ENABLED=0 โ no host web view, no headless browser, no C toolchain. Extracted from go-news-reader/reader and shared by any fetcher that must look like a browser.