Noooste/azuretls-client
GitHub: Noooste/azuretls-client
一个基于 Go 的 HTTP 客户端库,能够伪造 TLS/JA3/JA4、HTTP/2 和 HTTP/3 指纹,让程序请求在服务器端呈现为真实浏览器流量。
Stars: 450 | Forks: 65
# 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)
一个专为 Go 打造的强大 HTTP 客户端,**简单易用**,同时在需要时为您提供**完全控制权**。
非常适合用于 API 客户端、网页抓取、测试,以及任何需要超越标准库功能但又不想增加复杂性的场景。
## 安装
```
go get github.com/Noooste/azuretls-client
```
## 快速入门 - 30 秒上手
```
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())
}
```
**就是这样!** 只需创建一个 session 即可发起请求。它会自动使用 Chrome 的 TLS (JA3) 和 HTTP/2 指纹,让服务器认为这是一个真实的浏览器。
## 常见任务
### 发送带 JSON 的 POST 请求
```
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")
```
### 自定义 Header 顺序
```
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")
```
## 为什么选择 AzureTLS 而不是标准库?
| 功能 | net/http | AzureTLS |
|---------|----------|------------------------------|
| API 风格 | 基于包或 Client | 基于 Session |
| 浏览器指纹 | ❌ 看起来像 Go | ✅ **默认使用 Chrome 指纹** |
| Cookie 管理 | 需手动设置 | ✅ 自动 Cookie Jar |
| Header 排序 | ❌ | ✅ 内置 |
| 代理支持 | 需手动设置拨号器 | ✅ `session.SetProxy()` |
| 多种代理类型 | 手动设置 | ✅ HTTP/SOCKS4/SOCKS5 |
| 自定义 TLS (JA3/JA4) | ❌ | ✅ 简单易用 |
| HTTP/2 自定义 | ❌ | ✅ 简单易用 |
| HTTP/3 支持 | ❌ | ✅ 简单易用 |
| 浏览器预设 | ❌ | ✅ Chrome/Firefox/Safari/Edge |
## 🌟 核心特性
- **🌐 现代协议**:支持 HTTP/1.1、HTTP/2 和 HTTP/3
- **🔧 TLS 指纹伪造**:完全控制 ClientHello(JA3/JA4)
- **🎭 浏览器模拟**:内置 Chrome、Firefox、Safari、Edge 预设
- **🔗 高级代理支持**:支持带身份验证的 HTTP、HTTPS、SOCKS4、SOCKS5。
- **⛓️ 代理链**:支持多跳代理连接以增强匿名性
- **📋 Header 控制**:精确的排序和自定义 Header
- **🍪 Cookie 管理**:使用持久化 Jar 进行自动处理
- **🔒 SSL Pinning**:通过证书验证增强安全性
- **🐛 调试工具**:请求日志记录和导出功能
## 文档
- 📖 **[完整 API 参考](./examples/README.md)**:所有功能、方法和选项
- 💬 **[示例目录](./examples/)**:可运行的代码示例
- 🌍 **[CFFI 文档](./cffi/README.md)**:在其他语言中使用 AzureTLS
### 了解更多
- **发起请求**:GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS ([examples/README.md](./examples/README.md#make-requests))
- **TLS 指纹**:JA3/JA4 自定义 ([examples/README.md](./examples/README.md#modify-tls-client-hello-ja3))
- **HTTP/2 和 HTTP/3**:协议自定义 ([examples/README.md](./examples/README.md#modify-http2))
- **代理管理**:高级代理功能 ([examples/README.md](./examples/README.md#proxy))
- **Websockets**:WebSocket 支持 ([examples/README.md](./examples/README.md#websocket))
- **SSL Pinning**:证书验证 ([examples/README.md](./examples/README.md#ssl-pinning))
## 使用场景
**适用于:**
- 🔌 **API 集成**:默认伪装成真实浏览器的 REST 客户端
- 🌐 **网页抓取**:无需配置即可自动模拟浏览器指纹
- 🛡️ **测试反机器人系统**:利用真实的浏览器签名避免被检测为机器人
- 🔄 **代理轮换**:内置对多种代理类型的支持
- 🧪 **安全测试**:用于高级测试的自定义 TLS 配置
- 📊 **负载测试**:高性能并发请求
## 通过 CFFI 实现多语言支持
AzureTLS 可以在任何支持 C 外部函数接口 的编程语言中使用。
阅读 [CFFI 文档](./cffi/README.md) 了解完整详情。
## 社区与支持
- 💬 **[GitHub Discussions](https://github.com/Noooste/azuretls-client/discussions)**:提问、分享想法
- 🐛 **[GitHub Issues](https://github.com/Noooste/azuretls-client/issues)**:报告 Bug、请求新功能
- 📖 **[示例](./examples/)**:代码示例和教程
## 致谢
由开源社区用 ❤️ 构建。特别感谢所有的 [贡献者](https://github.com/Noooste/azuretls-client/graphs/contributors)。
标签:API客户端, AzureTLS, DNS枚举, EVTX分析, Go语言, HTTP2, HTTP3, JA3指纹, Radare2, TLS指纹, Web抓取, 代理支持, 伪装浏览器, 协议分析, 反检测, 反爬虫, 告警, 底层编程, 开源库, 指纹伪造, 搜索引擎爬虫, 日志审计, 权限提升, 流量伪装, 程序破解, 网络安全, 网络安全工具, 网络请求, 隐私保护