https://github.com/Noooste/azuretls-client
An easy-to-use HTTP client to spoof TLS/JA3, HTTP2 and HTTP3 fingerprint
https://github.com/Noooste/azuretls-client
golang http http-client http2 http3 http3-client ja3 ja3-fingerprint ssl-pinning tls tls-client
Last synced: about 2 months ago
JSON representation
An easy-to-use HTTP client to spoof TLS/JA3, HTTP2 and HTTP3 fingerprint
- Host: GitHub
- URL: https://github.com/Noooste/azuretls-client
- Owner: Noooste
- License: mit
- Created: 2023-05-15T09:41:47.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-08-22T20:53:37.000Z (about 2 months ago)
- Last Synced: 2025-08-22T22:57:52.323Z (about 2 months ago)
- Topics: golang, http, http-client, http2, http3, http3-client, ja3, ja3-fingerprint, ssl-pinning, tls, tls-client
- Language: Go
- Homepage:
- Size: 638 KB
- Stars: 311
- Watchers: 8
- Forks: 39
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- trackawesomelist - azuretls-client (โญ187) - An easy-to-use HTTP client 100% in Go to spoof TLS/JA3 and HTTP2 fingerprint (Recently Updated / [Dec 24, 2024](/content/2024/12/24/README.md))
- awesome-go - Noooste/azuretls-client - to-use HTTP client to spoof TLS/JA3, HTTP2 and HTTP3 fingerprint โ`358` (Networking / HTTP Clients)
- awesome-go - Noooste/azuretls-client - to-use HTTP client to spoof TLS/JA3, HTTP2 and HTTP3 fingerprint โ`270` (Networking / HTTP Clients)
README
# AzureTLS Client
[](https://godoc.org/github.com/Noooste/azuretls-client)
[](https://codecov.io/gh/Noooste/azuretls-client)
[](https://github.com/Noooste/azuretls-client/actions/workflows/push.yml)
[](https://goreportcard.com/report/Noooste/azuretls-client)
[](https://github.com/Noooste/azuretls-client/blob/master/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**
```go
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, 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## ๐ฏ 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
```go
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
```go
data := map[string]string{
"name": "AzureTLS",
"type": "HTTP Client",
}response, err := session.Post("https://api.example.com/data", data)
```### Browser Emulation
```go
session := azuretls.NewSession()
session.Browser = azuretls.Firefox // Automatic JA3 + HTTP/2 fingerprintingresponse, err := session.Get("https://website.com")
```### Custom Headers with Ordering
```go
session.OrderedHeaders = azuretls.OrderedHeaders{
{"User-Agent", "MyApp/1.0"},
{"Accept", "application/json"},
{"Authorization", "Bearer token"},
}
```### Proxy Support
```go
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/`](./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:*
- ๐ **[Your Language]** - [Your Repository](https://github.com/yourusername/azuretls-yourlang) by [@yourusername](https://github.com/yourusername)
*Want to see your language binding featured here? See the [Contributing Language Bindings](#-contributing-language-bindings) section below!*
### ๐ฆ Getting Started with CFFI
1. **Download** pre-built libraries from our [releases](https://github.com/Noooste/azuretls-client/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/`](./cffi/examples/)### ๐ ๏ธ Building CFFI Libraries
```bash
# 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`](./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/`](./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
- **Issues**: [GitHub Issues](https://github.com/Noooste/azuretls-client/issues)
- **Discussions**: [GitHub Discussions](https://github.com/Noooste/azuretls-client/discussions)
- **Examples**: [examples/](./examples/)
- **CFFI Documentation**: [cffi/README.md](./cffi/README.md)## ๐ Acknowledgments
AzureTLS Client is built with โค๏ธ by the open source community. Special thanks to all [contributors](https://github.com/Noooste/azuretls-client/graphs/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[](https://www.buymeacoffee.com/noste)
*Ready to build powerful HTTP clients with ease? Let's get started! ๐*