{"id":23480049,"url":"https://github.com/Noooste/azuretls-client","last_synced_at":"2025-08-27T08:32:01.855Z","repository":{"id":168967595,"uuid":"640866371","full_name":"Noooste/azuretls-client","owner":"Noooste","description":"An easy-to-use HTTP client to spoof TLS/JA3, HTTP2 and HTTP3 fingerprint","archived":false,"fork":false,"pushed_at":"2025-08-22T20:53:37.000Z","size":653,"stargazers_count":311,"open_issues_count":14,"forks_count":39,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-08-22T22:57:52.323Z","etag":null,"topics":["golang","http","http-client","http2","http3","http3-client","ja3","ja3-fingerprint","ssl-pinning","tls","tls-client"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Noooste.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"buy_me_a_coffee":"noste","github":"Noooste"}},"created_at":"2023-05-15T09:41:47.000Z","updated_at":"2025-08-21T15:42:41.000Z","dependencies_parsed_at":"2023-05-28T09:45:16.649Z","dependency_job_id":"3f4f59f8-8616-4a63-87d0-87fd73091d79","html_url":"https://github.com/Noooste/azuretls-client","commit_stats":null,"previous_names":["noooste/azuretls-client"],"tags_count":94,"template":false,"template_full_name":null,"purl":"pkg:github/Noooste/azuretls-client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Noooste%2Fazuretls-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Noooste%2Fazuretls-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Noooste%2Fazuretls-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Noooste%2Fazuretls-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Noooste","download_url":"https://codeload.github.com/Noooste/azuretls-client/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Noooste%2Fazuretls-client/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272310303,"owners_count":24911651,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-27T02:00:09.397Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["golang","http","http-client","http2","http3","http3-client","ja3","ja3-fingerprint","ssl-pinning","tls","tls-client"],"created_at":"2024-12-24T20:00:47.153Z","updated_at":"2025-08-27T08:32:01.827Z","avatar_url":"https://github.com/Noooste.png","language":"Go","funding_links":["https://buymeacoffee.com/noste","https://github.com/sponsors/Noooste","https://www.buymeacoffee.com/noste"],"categories":["Networking","Recently Updated","网络"],"sub_categories":["HTTP Clients","[Dec 24, 2024](/content/2024/12/24/README.md)","HTTP客户端"],"readme":"# AzureTLS Client\n[![GoDoc](https://godoc.org/github.com/Noooste/azuretls-client?status.svg)](https://godoc.org/github.com/Noooste/azuretls-client)\n[![codecov](https://codecov.io/gh/Noooste/azuretls-client/graph/badge.svg?token=XGHX707RK6)](https://codecov.io/gh/Noooste/azuretls-client)\n[![build](https://github.com/Noooste/azuretls-client/actions/workflows/push.yml/badge.svg)](https://github.com/Noooste/azuretls-client/actions/workflows/push.yml)\n[![Go Report Card](https://goreportcard.com/badge/Noooste/azuretls-client)](https://goreportcard.com/report/Noooste/azuretls-client)\n[![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/Noooste/azuretls-client/blob/master/LICENSE)\n\n## 🚀 Simple, Powerful HTTP Client for Go\n\nAzureTLS 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.\n\n### ✨ Why Choose AzureTLS Client?\n\n**🎯 Simple by Default**\n```go\nsession := azuretls.NewSession()\nresponse, err := session.Get(\"https://www.google.com/\")\nif err != nil {\n    panic(err)\n}\nfmt.Println(response.String())\n```\n\n**⚡ Powerful When Needed**\n- Full TLS fingerprint control (JA3/JA4)\n- HTTP/2 and HTTP/3 support with custom settings\n- Advanced proxy support (HTTP/HTTPS/SOCKS5)\n- Proxy chain support for multi-hop connections\n- Precise header ordering and control\n\n## 🌟 Key Features\n\n- **🌐 Modern Protocols** - HTTP/1.1, HTTP/2, and HTTP/3 support\n- **🔧 TLS Fingerprinting** - Full control over ClientHello (JA3/JA4)\n- **🎭 Browser Emulation** - Chrome, Firefox, Safari, Edge presets\n- **🔗 Advanced Proxy Support** - HTTP, HTTPS, SOCKS4, SOCKS5 with authentication.\n- **⛓️ Proxy Chaining** - Multi-hop proxy connections for enhanced anonymity\n- **📋 Header Control** - Precise ordering and custom headers\n- **🍪 Cookie Management** - Automatic handling with persistent jar\n- **🔒 SSL Pinning** - Enhanced security with certificate validation\n- **🐛 Debug Tools** - Request logging and dumping capabilities\n\n## 🎯 Perfect For\n\n- **API Integration** - Simple REST API clients\n- **Web Scraping** - Advanced bot detection evasion\n- **Security Testing** - Custom TLS fingerprinting\n- **Load Testing** - High-performance concurrent requests\n- **Proxy Management** - Multi-proxy rotation and testing\n\n## 📋 Quick Examples\n\n### Simple GET Request\n```go\nsession := azuretls.NewSession()\ndefer session.Close()\n\nresponse, err := session.Get(\"https://api.github.com/user\")\nif err != nil {\n    log.Fatal(err)\n}\nfmt.Printf(\"Status: %d\\n\", response.StatusCode)\n```\n\n### POST with JSON\n```go\ndata := map[string]string{\n    \"name\": \"AzureTLS\",\n    \"type\": \"HTTP Client\",\n}\n\nresponse, err := session.Post(\"https://api.example.com/data\", data)\n```\n\n### Browser Emulation\n```go\nsession := azuretls.NewSession()\nsession.Browser = azuretls.Firefox // Automatic JA3 + HTTP/2 fingerprinting\n\nresponse, err := session.Get(\"https://website.com\")\n```\n\n### Custom Headers with Ordering\n```go\nsession.OrderedHeaders = azuretls.OrderedHeaders{\n    {\"User-Agent\", \"MyApp/1.0\"},\n    {\"Accept\", \"application/json\"},\n    {\"Authorization\", \"Bearer token\"},\n}\n```\n\n### Proxy Support\n```go\nsession := azuretls.NewSession()\nerr := session.SetProxy(\"http://username:password@proxy.example.com:8080\")\nif err != nil {\n    log.Fatal(err)\n}\n\nresponse, err := session.Get(\"https://api.example.com\")\n```\n\n## 🌍 Multi-Language Support via CFFI\n\nAzureTLS Client can be used from **any programming language** that supports C Foreign Function Interface (FFI) through our comprehensive CFFI bindings.\n\n### 🔗 Available CFFI Implementation\n\nThe 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.\n\n**📦 Pre-built libraries available for:**\n- **Linux** (amd64, arm64, 386, arm)\n- **Windows** (amd64, 386, arm64)\n- **macOS** (amd64, arm64)\n\n### 🌐 Community Language Bindings\n\n*Community-maintained repositories for additional languages:*\n\n\u003c!-- Add your language binding repository here via PR --\u003e\n- 🔗 **[Your Language]** - [Your Repository](https://github.com/yourusername/azuretls-yourlang) by [@yourusername](https://github.com/yourusername)\n\n*Want to see your language binding featured here? See the [Contributing Language Bindings](#-contributing-language-bindings) section below!*\n\n### 📦 Getting Started with CFFI\n\n1. **Download** pre-built libraries from our [releases](https://github.com/Noooste/azuretls-client/releases)\n2. **Choose** your platform: Linux, Windows, macOS, FreeBSD\n3. **Pick** your architecture: amd64, arm64, 386, arm\n4. **Follow** language-specific examples in [`cffi/examples/`](./cffi/examples/)\n\n### 🛠️ Building CFFI Libraries\n\n```bash\n# Build for current platform\ncd cffi \u0026\u0026 make\n\n# Build for all platforms\ncd cffi \u0026\u0026 make build-all\n\n# Build for specific platform\ncd cffi \u0026\u0026 make build-linux-amd64\n```\n\n### 📚 Comprehensive Documentation\n\nFull CFFI documentation with API reference, examples, and troubleshooting guides is available at [`cffi/README.md`](./cffi/README.md).\n\n### 🤝 Contributing Language Bindings\n\n**We welcome and appreciate contributions for additional language support!**\n\nIf you create bindings for a new programming language, we'd love to:\n- 📝 **Feature your repository** in this README\n- 🏆 **Credit you as a contributor**\n- 🔗 **Link to your implementation** for the community\n- 🚀 **Help promote** your language bindings\n\n**Language bindings we'd especially appreciate:**\n- 🐍 **Python** - ctypes/cffi implementation\n- 🟨 **Node.js** - ffi-napi integration\n- 📘 **TypeScript** - Type-safe Node.js bindings\n- ☕ **Java** - JNI bindings\n- 🔷 **C#** - P/Invoke implementation\n- 🦀 **Rust** - libc/bindgen bindings\n- And any others!\n\n**How to contribute language bindings:**\n\n1. 🏗️ **Create your own repository** with language bindings using our CFFI\n2. 🔧 **Implement the core functionality** using our C API from [`cffi/`](./cffi/)\n3. 📖 **Add comprehensive examples and documentation**\n4. 🧪 **Include tests** demonstrating the functionality\n5. 📬 **Submit a pull request** to this repository to **add your repo link** to this README\n\n**Repository Requirements:**\n- Use the AzureTLS CFFI libraries from our releases\n- Include clear installation instructions\n- Provide working examples\n- Add proper documentation\n- Follow your language's best practices\n\n## 🤝 Community \u0026 Support\n\n- **Issues**: [GitHub Issues](https://github.com/Noooste/azuretls-client/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/Noooste/azuretls-client/discussions)\n- **Examples**: [examples/](./examples/)\n- **CFFI Documentation**: [cffi/README.md](./cffi/README.md)\n\n## 🙏 Acknowledgments\n\nAzureTLS 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.\n\n## ⭐ Show Your Support\n\nIf AzureTLS Client helps you build something awesome, consider:\n- ⭐ **Star this repository**\n- 🐛 **Report bugs** or suggest features\n- 💡 **Share your use cases** in discussions\n- 🤝 **Contribute** code or documentation\n- 🌍 **Create bindings** for your favorite programming language\n\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/noste)\n\n*Ready to build powerful HTTP clients with ease? Let's get started! 🚀*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNoooste%2Fazuretls-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FNoooste%2Fazuretls-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNoooste%2Fazuretls-client/lists"}