I built a small wrapper around curl-impersonate that makes it act like Go's net/http package: github.com/dstockton/go-curl-impersonate-net-http-wrapper Why? Some sites aggressively fingerprint HTTP clients and block "non-browser" traffic. curl-impersonate does an amazing job at mimicking real browsers. But swapping it into Go projects usually means reworking code. So... this wrapper just pretends to be net/http. If your code uses http.Get(), http.Post(), or a http.Client, you can swap in my package and (hopefully) get past those annoying "Access Denied / suspicious traffic" walls without rewriting everything. Example: // Just import my package instead of net/http import http "github.com/dstockton/go-curl-impersonate-net-http-wrapper" resp, err := http.Get("https://example.com") That’s it. Your Go program is now speaking fluent Chrome/Firefox. Caveats: Only tested on Linux + macOS so far. Still very experimental (feedback and PRs welcome!). I built this mostly because I got tired of cat-and-mouse games with sites that block bots. If you're scraping, testing, or just curious about browser impersonation in Go, give it a spin. Repo: https://github.com/dstockton/go-curl-impersonate-net-http-wr... Would love feedback, bug reports, or ideas on making this more robust. |