Advanced Go HTTP client with browser impersonation, TLS fingerprinting, HTTP/3 support, and anti-bot bypass for web automation.
Surf is an advanced HTTP client library for Go that specializes in browser impersonation and anti-bot evasion. It allows developers to make HTTP requests that accurately mimic real Chrome and Firefox browsers, complete with TLS fingerprinting (JA3/JA4), HTTP/3 support, and comprehensive proxy configurations. This solves the problem of getting blocked by anti-bot systems during web scraping and automation tasks.
Go developers building web scrapers, automation tools, or API clients that need to bypass bot detection and mimic real browser traffic. Security researchers and penetration testers who require precise control over HTTP fingerprints.
Developers choose Surf over standard HTTP clients because it provides enterprise-grade browser impersonation with full TLS and QUIC fingerprinting out of the box. Its seamless integration with Go's standard library and extensible middleware system makes it both powerful and easy to adopt.
SURF - Advanced Go HTTP client with Chrome/Firefox browser impersonation, HTTP/3 with QUIC fingerprinting, JA3/JA4 TLS emulation, and anti-bot bypass for web automation and scraping.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Accurately mimics Chrome v145 and Firefox v148 with platform-specific fingerprints, including TLS JA3/JA4 and QUIC settings, as shown in the impersonation examples for anti-bot evasion.
Supports full HTTP/3 over QUIC with browser-specific transport parameters and automatic fallback handling, including SOCKS5 UDP proxy compatibility for modern web interactions.
Offers chainable methods for elegant code and an extensible middleware system with priority support, enhancing developer experience through clear builder patterns and customization.
Seamlessly converts to net/http.Client with Std(), allowing use with third-party libraries while preserving key features like TLS fingerprinting and headers, as detailed in the compatibility section.
When converting to standard net/http.Client, critical features like retry logic, response caching, and request timing are lost, as explicitly admitted in the README's limitations table.
Relies on external libraries like uTLS and QUIC-GO for advanced features, which can increase binary size and introduce maintenance overhead compared to lighter HTTP clients.
The builder pattern and numerous options make basic HTTP requests more verbose than with minimalistic clients, potentially slowing down development for straightforward use cases.