Skip to content

v0.1.0

Choose a tag to compare

@luinor223 luinor223 released this 28 Oct 16:15
· 11 commits to main since this release

First release of cloudfetch, a Go HTTP client that gets past Cloudflare bot detection by impersonating a real browser.

go get github.com/luinor223/cloudfetch@v0.1.0

Features

  • Browser TLS fingerprints via uTLS: Chrome 133 (default), Firefox 120, Safari 16 and Edge 85, selected with WithBrowser
  • Matching headers: User-Agent, Sec-CH-UA, Sec-Fetch-* and friends for the same browser and version as the TLS fingerprint
  • IUAM challenge solver: solves the classic "Checking your browser" JS challenge with goja and retries automatically
  • HTTP/2 with ALPN negotiation and connection reuse, falling back to HTTP/1.1
  • Transparent decompression: brotli, gzip, deflate and zstd via resp.Text() / resp.Bytes()
  • HTTP CONNECT proxies with optional basic auth (WithProxy("http://user:pass@host:port"))
  • Cancellation: DoContext applies a context to every request and to challenge waits
  • Cookie jar shared across requests

Limitations

  • Header order and HTTP/2 settings come from Go's net/http, so sites that fingerprint those can still tell it apart from a browser.
  • Newer challenge-platform JS challenges are detected but usually not solved.
  • Turnstile and CAPTCHAs need a real browser.

See the README for usage.