A powerful HTTP client for Go that's simple to use but gives you full control when you need it.
Perfect for API clients, web scraping, testing, and any situation where you need more than the standard library offers, without the complexity.
go get github.com/Noooste/azuretls-client
package main
import (
"fmt"
"log"
"github.com/Noooste/azuretls-client"
)
func main() {
session := azuretls.NewSession()
defer session.Close()
response, err := session.Get("https://api.github.com")
if err != nil {
log.Fatal(err)
}
fmt.Printf("Status: %d\n", response.StatusCode)
fmt.Println(response.String())
}
That's it! Just create a session and make requests. This automatically uses Chrome's TLS (JA3) and HTTP/2 fingerprint, making it look like a real browser to servers.
💡 New to Go? AzureTLS uses a session-based API (similar to creating an
http.Client). Each session automatically mimics Chrome by default, no fingerprint configuration needed. Advanced customization is completely optional.
session := azuretls.NewSession()
defer session.Close()
data := map[string]string{
"name": "AzureTLS",
"type": "HTTP Client",
}
response, err := session.Post("https://api.example.com/data", data)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Status: %d\n", response.StatusCode)
session := azuretls.NewSession()
defer session.Close()
// One line proxy setup: supports HTTP, HTTPS, SOCKS4, SOCKS5
err := session.SetProxy("http://username:password@proxy.example.com:8080")
if err != nil {
log.Fatal(err)
}
response, err := session.Get("https://api.ipify.org")
session := azuretls.NewSession()
defer session.Close()
// Default: Chrome fingerprint (already active, no configuration needed!)
// Want to mimic a different browser? Just change it:
session.Browser = azuretls.Firefox // or Safari, Edge, etc.
response, err := session.Get("https://example.com")
session := azuretls.NewSession()
defer session.Close()
// Precise control over header order
session.OrderedHeaders = azuretls.OrderedHeaders{
{"User-Agent", "MyApp/1.0"},
{"Accept", "application/json"},
{"Authorization", "Bearer token123"},
}
response, err := session.Get("https://api.example.com")
| Feature | net/http | AzureTLS |
|---|---|---|
| API Style | Package or Client-based | Session-based |
| Browser Fingerprint | ❌ Looks like Go | ✅ Chrome by default |
| Cookie Management | Manual setup | ✅ Automatic jar |
| Ordered Headers | ❌ | ✅ Built-in |
| Proxy Support | Manual dialer setup | ✅ session.SetProxy() |
| Multiple Proxy Types | Manual | ✅ HTTP/SOCKS4/SOCKS5 |
| Custom TLS (JA3/JA4) | ❌ | ✅ Easy |
| HTTP/2 Customization | ❌ | ✅ Easy |
| HTTP/3 Support | ❌ | ✅ Easy |
| Browser Presets | ❌ | ✅ Chrome/Firefox/Safari/Edge |
Perfect for: - 🔌 API Integration: REST clients that look like real browsers by default - 🌐 Web Scraping: Automatic browser fingerprinting without configuration - 🛡️ Testing antibot systems: Avoid bot detection with authentic browser signatures - 🔄 Proxy Rotation: Built-in support for multiple proxy types - 🧪 Security Testing: Custom TLS configurations for advanced testing - 📊 Load Testing: High-performance concurrent requests
AzureTLS can be used from any programming language that supports C Foreign Function Interface. Read the CFFI documentation for full details.
If AzureTLS helps you build something awesome:
Built with ❤️ by the open source community. Special thanks to all contributors.
TLS fingerprinting alone isn't enough for modern bot protection. Hyper Solutions provides the missing piece - API endpoints that generate valid antibot tokens for:
Akamai • DataDome • Kasada • Incapsula
No browser automation. Just simple API calls that return the exact cookies and headers these systems require.
🚀 Get Your API Key | 📖 Docs | 💬 Discord
$ claude mcp add azuretls-client \
-- python -m otcore.mcp_server <graph>