AzureTLS Client is a high-performance HTTP client library for Go that combines simplicity with unlimited customization. Whether you're building a simple API client or need advanced features like TLS fingerprinting and HTTP/2 customization, AzureTLS Client has you covered.
π― Simple by Default
session := azuretls.NewSession()
response, err := session.Get("https://www.google.com/")
if err != nil {
panic(err)
}
fmt.Println(response.String())
β‘ Powerful When Needed
- Full TLS fingerprint control (JA3/JA4)
- HTTP/2 and HTTP/3 support with custom settings
- Advanced proxy support (HTTP/HTTPS/SOCKS5)
- Proxy chain support for multi-hop connections
- Precise header ordering and control
- π Modern Protocols - HTTP/1.1, HTTP/2, and HTTP/3 support
- π§ TLS Fingerprinting - Full control over ClientHello (JA3/JA4)
- π Browser Emulation - Chrome, Firefox, Safari, Edge presets
- π Advanced Proxy Support - HTTP, HTTPS, SOCKS5 with authentication.
- βοΈ Proxy Chaining - Multi-hop proxy connections for enhanced anonymity
- π Header Control - Precise ordering and custom headers
- πͺ Cookie Management - Automatic handling with persistent jar
- π SSL Pinning - Enhanced security with certificate validation
- π Debug Tools - Request logging and dumping capabilities
- API Integration - Simple REST API clients
- Web Scraping - Advanced bot detection evasion
- Security Testing - Custom TLS fingerprinting
- Load Testing - High-performance concurrent requests
- Proxy Management - Multi-proxy rotation and testing
session := azuretls.NewSession()
defer session.Close()
response, err := session.Get("https://api.github.com/user")
if err != nil {
log.Fatal(err)
}
fmt.Printf("Status: %d\n", response.StatusCode)
data := map[string]string{
"name": "AzureTLS",
"type": "HTTP Client",
}
response, err := session.Post("https://api.example.com/data", data)
session := azuretls.NewSession()
session.Browser = azuretls.Firefox // Automatic JA3 + HTTP/2 fingerprinting
response, err := session.Get("https://website.com")
session.OrderedHeaders = azuretls.OrderedHeaders{
{"User-Agent", "MyApp/1.0"},
{"Accept", "application/json"},
{"Authorization", "Bearer token"},
}
session := azuretls.NewSession()
err := session.SetProxy("https://username:password@proxy.example.com:8080")
if err != nil {
log.Fatal(err)
}
response, err := session.Get("https://api.example.com")
AzureTLS Client can be used from any programming language that supports C Foreign Function Interface (FFI) through our comprehensive CFFI bindings.
The core CFFI (C Foreign Function Interface) library is available in the cffi/
directory, providing a C API that can be used from any language supporting C FFI.
π¦ Pre-built libraries available for:
- Linux (amd64, arm64, 386, arm)
- Windows (amd64, 386, arm64)
- macOS (amd64, arm64)
Community-maintained repositories for additional languages:
- π [Your Language] - Your Repository by @yourusername
Want to see your language binding featured here? See the Contributing Language Bindings section below!
- Download pre-built libraries from our releases
- Choose your platform: Linux, Windows, macOS, FreeBSD
- Pick your architecture: amd64, arm64, 386, arm
- Follow language-specific examples in
cffi/examples/
# Build for current platform
cd cffi && make
# Build for all platforms
cd cffi && make build-all
# Build for specific platform
cd cffi && make build-linux-amd64
Full CFFI documentation with API reference, examples, and troubleshooting guides is available at cffi/README.md
.
We welcome and appreciate contributions for additional language support!
If you create bindings for a new programming language, we'd love to:
- π Feature your repository in this README
- π Credit you as a contributor
- π Link to your implementation for the community
- π Help promote your language bindings
Language bindings we'd especially appreciate:
- π Python - ctypes/cffi implementation
- π¨ Node.js - ffi-napi integration
- π TypeScript - Type-safe Node.js bindings
- β Java - JNI bindings
- π· C# - P/Invoke implementation
- π¦ Rust - libc/bindgen bindings
- And any others!
How to contribute language bindings:
- ποΈ Create your own repository with language bindings using our CFFI
- π§ Implement the core functionality using our C API from
cffi/
- π Add comprehensive examples and documentation
- π§ͺ Include tests demonstrating the functionality
- π¬ Submit a pull request to this repository to add your repo link to this README
Repository Requirements:
- Use the AzureTLS CFFI libraries from our releases
- Include clear installation instructions
- Provide working examples
- Add proper documentation
- Follow your language's best practices
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Examples: examples/
- CFFI Documentation: cffi/README.md
AzureTLS Client is built with β€οΈ by the open source community. Special thanks to all contributors who help make this project better.
If AzureTLS Client helps you build something awesome, consider:
- β Star this repository
- π Report bugs or suggest features
- π‘ Share your use cases in discussions
- π€ Contribute code or documentation
- π Create bindings for your favorite programming language
Ready to build powerful HTTP clients with ease? Let's get started! π