MCPcopy Index your code
hub / github.com/Noooste/azuretls-client

github.com/Noooste/azuretls-client @v1.13.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.13.2 ↗ · + Follow
590 symbols 1,980 edges 60 files 251 documented · 43% 1 cross-repo links
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

AzureTLS Client

GoDoc codecov build Go Report Card License

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.

Installation

go get github.com/Noooste/azuretls-client

Quick Start - 30 Seconds

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.

Common Tasks

POST Request with JSON

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)

Using a Proxy

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")

Browser Emulation

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")

Custom Header Ordering

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")

Why AzureTLS vs Standard Library?

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

🌟 Key Features

  • 🌐 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, SOCKS4, 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

Documentation

Learn More

Use Cases

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

Multi-Language Support via CFFI

AzureTLS can be used from any programming language that supports C Foreign Function Interface. Read the CFFI documentation for full details.

Community & Support

Show Your Support

If AzureTLS helps you build something awesome:

  • 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

"Buy Me A Coffee"

Acknowledgments

Built with ❤️ by the open source community. Special thanks to all contributors.


🛡️ Need Antibot Bypass?

TLS fingerprinting alone isn't enough for modern bot protection. Hyper Solutions provides the missing piece - API endpoints that generate valid antibot tokens for:

AkamaiDataDomeKasadaIncapsula

No browser automation. Just simple API calls that return the exact cookies and headers these systems require.

🚀 Get Your API Key | 📖 Docs | 💬 Discord

Extension points exported contracts — how you extend this code

ProxyDialer (Interface)
ProxyDialer interface for both single and chain proxy dialers [1 implementers]
proxy.go
SessionConfig (Interface)
(no doc)
cffi/examples/typescript_example.ts
RequestOptions (Interface)
(no doc)
cffi/examples/typescript_example.ts
AzureTLSResponse (Interface)
(no doc)
cffi/examples/typescript_example.ts
AzureTLSLibrary (Interface)
(no doc)
cffi/examples/typescript_example.ts

Core symbols most depended-on inside this repo

Get
called by 106
session.go
Close
called by 62
session.go
New
called by 61
pinner.go
String
called by 44
response.go
Do
called by 39
session.go
Set
called by 37
header.go
Write
called by 32
proxy.go
goStringToCString
called by 30
cffi/main.go

Shape

Function 284
Method 251
Struct 38
Class 9
Interface 5
TypeAlias 3

Languages

Go85%
Python8%
TypeScript7%
C1%

Modules by API surface

proxy.go36 symbols
socks5_udp.go32 symbols
cffi/main.go30 symbols
cffi/examples/python_example.py30 symbols
cffi/examples/typescript_example.ts27 symbols
test/proxy_chain_test.go24 symbols
test/session_test.go21 symbols
test/compression_test.go21 symbols
session.go21 symbols
http3.go19 symbols
encoding.go17 symbols
cffi/examples/nodejs_example.js17 symbols

Used by 1 indexed graphs manifest dependencies, hub-wide

For agents

$ claude mcp add azuretls-client \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page