Skip to content

Noooste/azuretls-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

AzureTLS Client

GoDoc codecov build Go Report Card License

πŸš€ Simple, Powerful HTTP Client for Go

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.

✨ Why Choose AzureTLS Client?

🎯 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

🌟 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, 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

🎯 Perfect For

  • 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

πŸ“‹ Quick Examples

Simple GET Request

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)

POST with JSON

data := map[string]string{
    "name": "AzureTLS",
    "type": "HTTP Client",
}

response, err := session.Post("https://api.example.com/data", data)

Browser Emulation

session := azuretls.NewSession()
session.Browser = azuretls.Firefox // Automatic JA3 + HTTP/2 fingerprinting

response, err := session.Get("https://website.com")

Custom Headers with Ordering

session.OrderedHeaders = azuretls.OrderedHeaders{
    {"User-Agent", "MyApp/1.0"},
    {"Accept", "application/json"},
    {"Authorization", "Bearer token"},
}

Proxy Support

session := azuretls.NewSession()
err := session.SetProxy("http://username:password@proxy.example.com:8080")
if err != nil {
    log.Fatal(err)
}

response, err := session.Get("https://api.example.com")

🌍 Multi-Language Support via CFFI

AzureTLS Client can be used from any programming language that supports C Foreign Function Interface (FFI) through our comprehensive CFFI bindings.

πŸ”— Available CFFI Implementation

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 Language Bindings

Community-maintained repositories for additional languages:

Want to see your language binding featured here? See the Contributing Language Bindings section below!

πŸ“¦ Getting Started with CFFI

  1. Download pre-built libraries from our releases
  2. Choose your platform: Linux, Windows, macOS, FreeBSD
  3. Pick your architecture: amd64, arm64, 386, arm
  4. Follow language-specific examples in cffi/examples/

πŸ› οΈ Building CFFI Libraries

# 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

πŸ“š Comprehensive Documentation

Full CFFI documentation with API reference, examples, and troubleshooting guides is available at cffi/README.md.

🀝 Contributing Language Bindings

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:

  1. πŸ—οΈ Create your own repository with language bindings using our CFFI
  2. πŸ”§ Implement the core functionality using our C API from cffi/
  3. πŸ“– Add comprehensive examples and documentation
  4. πŸ§ͺ Include tests demonstrating the functionality
  5. πŸ“¬ 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

🀝 Community & Support

πŸ™ Acknowledgments

AzureTLS Client is built with ❀️ by the open source community. Special thanks to all contributors who help make this project better.

⭐ Show Your Support

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

"Buy Me A Coffee"

Ready to build powerful HTTP clients with ease? Let's get started! πŸš€

About

An easy-to-use HTTP client to spoof TLS/JA3, HTTP2 and HTTP3 fingerprint

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Sponsor this project

  •  

Contributors 10