win
|
088a508e60
|
fix: Gemini CLI 指纹全面修复
CI / test (push) Failing after 1m33s
CI / golangci-lint (push) Failing after 6s
Security Scan / backend-security (push) Failing after 5s
Security Scan / frontend-security (push) Failing after 6s
- User-Agent: GeminiCLI/0.1.5 → GeminiCLI/0.33.1/{model} ({platform}; {arch})
格式、版本、大小写全部对齐真实 Gemini CLI 0.33.1
- 新增 x-goog-api-client: gl-node/24.13.1 (匹配 google-auth-library DefaultTransporter)
- ideType: ANTIGRAVITY → IDE_UNSPECIFIED (修复身份泄露,真实 Gemini CLI 用 IDE_UNSPECIFIED)
- Token 交换/刷新: 添加 google-api-nodejs-client UA + x-goog-api-client
- 版本号可通过环境变量 GEMINI_CLI_VERSION 覆盖
|
2026-03-27 13:07:18 +08:00 |
|
win
|
2279bde564
|
fix: 心跳接入启动 + 网关错误去重
CI / test (push) Failing after 1m32s
CI / golangci-lint (push) Failing after 32s
Security Scan / backend-security (push) Failing after 32s
Security Scan / frontend-security (push) Failing after 1m32s
- AntigravityGatewayService 嵌入心跳,构造时自动启动
- Forward() 方法中注册心跳(首次 API 调用触发,后续更新 token)
- 新建 gateway_errors.go: WriteClaudeErrorResponse/WriteGoogleErrorResponse 共享实现
- antigravity writeGoogleError 去掉手写映射,统一用 googleapi.HTTPStatusToGoogleStatus()
- gemini writeClaudeError/writeGoogleError 委托到共享实现
- 新增 docs/antigravity-fingerprint-diagnostic.md 诊断手册
|
2026-03-27 12:11:22 +08:00 |
|
win
|
ffe6a5e331
|
feat: Antigravity 100% 指纹还原 + BoringCrypto TLS
CI / test (push) Failing after 4s
CI / golangci-lint (push) Failing after 3s
Security Scan / backend-security (push) Failing after 1m0s
Security Scan / frontend-security (push) Failing after 32s
Antigravity:
- Client ID 保留双 ID 支持(二进制确认两个都存在)
- Daily URL 去掉 .sandbox 后缀(日志确认)
- Redirect URI /callback → /oauth-callback(extension.js 确认)
- User-Agent 动态 OS/arch: antigravity/{ver} {os}/{arch}
- 新增 x-goog-api-client: gl-go/{goVer} gax-go/v2 grpc-go/1.81.0-dev
- googleapis 不再走 Node.js proxy → Go 原生 TLS(匹配真实 BoringCrypto)
- 新增 Go 后端心跳服务(每5分钟 loadCodeAssist + fetchAvailableModels)
- Dockerfile 切换 BoringCrypto 编译(CGO_ENABLED=1 GOEXPERIMENT=boringcrypto)
GeminiCLI:
- User-Agent 动态化: GeminiCLI/0.1.5 ({OS}; {ARCH})
- AI Studio 请求补上 User-Agent
Claude:
- CLI 版本 2.1.84, 包版本 0.74.0, 运行时 v24.3.0
- Token 交换 axios/1.13.6, timeout 15s
- proxy.js 仅服务 api.anthropic.com(Claude 专属)
架构变更:
- Node.js proxy 仅用于 Claude (api.anthropic.com)
- Antigravity (googleapis) 走 Go 原生 HTTP + GOST proxy
- TLS 指纹: Go BoringCrypto ≈ 真实 Antigravity BoringCrypto
|
2026-03-27 02:24:03 +08:00 |
|
win
|
8c6e578a84
|
feat: IP管理代理与 node-tls-proxy 指纹伪装共存
CI / test (push) Failing after 6s
CI / golangci-lint (push) Failing after 6s
Security Scan / backend-security (push) Failing after 6s
Security Scan / frontend-security (push) Failing after 6s
- Do()/DoWithTLS() 移除 proxyURL=="" 条件,绑了代理也走 node-tls-proxy
- doViaNodeTLSProxy 通过 X-Upstream-Proxy header 传递账号代理给 node-tls-proxy
- node-tls-proxy 支持 per-request 动态上游代理,优先 X-Upstream-Proxy,回退全局 UPSTREAM_PROXY
- 效果:IP管理 = 落地机网络,账号绑代理后指纹伪装仍然生效
|
2026-03-26 14:00:17 +08:00 |
|
win
|
e1de3a7b21
|
fix: antigravity client 无显式代理时自动读取 HTTPS_PROXY 环境变量
CI / test (push) Failing after 1m32s
CI / golangci-lint (push) Failing after 1m32s
Security Scan / backend-security (push) Failing after 32s
Security Scan / frontend-security (push) Failing after 32s
解决 OAuth token 交换在国内服务器超时的问题:
当账号未绑定代理时,NewClient 现在显式使用 http.ProxyFromEnvironment,
使得 HTTPS_PROXY 环境变量对 oauth2.googleapis.com 等外部请求生效。
API 调用仍然走 node-tls-proxy(指纹伪装不受影响)。
|
2026-03-26 12:31:01 +08:00 |
|
win
|
f5abc62fd3
|
fix: 三节点部署脚本修复 + sub2api 容器代理透传
CI / test (push) Failing after 12s
CI / golangci-lint (push) Failing after 6s
Security Scan / backend-security (push) Failing after 5s
Security Scan / frontend-security (push) Failing after 5s
- GOST 下载 URL 修复:补全版本号 (gost_3.2.6_linux_amd64.tar.gz)
- CN 中转机服务名改为 gost-sub2api-relay,避免与现有 gost-relay 冲突
- CN 中转机监听协议改为 http(兼容 node-tls-proxy 的 HTTP CONNECT)
- 美国落地机服务名改为 gost-sub2api-exit
- sub2api 容器透传 HTTPS_PROXY/HTTP_PROXY 环境变量(解决 OAuth 超时)
- ops_cleanup 日志字段名避免触发 ERROR 误判
- 添加密码重置脚本和 SOCKS5 服务文件
|
2026-03-26 12:09:05 +08:00 |
|
win
|
b3cb3ea345
|
fix: 构建脚本路径改为 antigravity/node-tls-proxy
CI / test (push) Failing after 31s
CI / golangci-lint (push) Failing after 32s
Security Scan / backend-security (push) Failing after 14s
Security Scan / frontend-security (push) Failing after 32s
|
2026-03-25 14:36:56 +08:00 |
|
win
|
a9dbceba32
|
fix: 去掉错误的 CN中转机 IP 配置,node-tls-proxy 在本机 Docker 内自动发现
CI / test (push) Failing after 12s
Security Scan / backend-security (push) Has been cancelled
Security Scan / frontend-security (push) Has been cancelled
CI / golangci-lint (push) Failing after 2m47s
|
2026-03-25 14:30:31 +08:00 |
|
win
|
b64997ae17
|
fix: 修复 setup-node1 deploy 目录路径查找逻辑,兼容从仓库根目录执行
CI / golangci-lint (push) Has been cancelled
Security Scan / backend-security (push) Has been cancelled
Security Scan / frontend-security (push) Has been cancelled
CI / test (push) Has been cancelled
|
2026-03-25 14:28:50 +08:00 |
|
win
|
4f6c5d7b5c
|
feat: 三节点部署脚本(上海/CN中转/美国落地)
|
2026-03-25 14:06:06 +08:00 |
|
win
|
91600c4abe
|
feat: 添加 Mac 和 Linux 全量指纹验证脚本
|
2026-03-25 13:00:52 +08:00 |
|
win
|
324483eabd
|
feat: TCP Window Size 伪装 + CLI 版本自动追踪
CI / test (push) Failing after 3s
CI / golangci-lint (push) Failing after 4s
Security Scan / backend-security (push) Failing after 6s
Security Scan / frontend-security (push) Failing after 5s
firewall.sh:
- TCP Window Size 设为 65535(macOS 默认,Linux 服务器默认 29200)
- 持久化到 /etc/sysctl.conf
maintenance/update-cli-version.sh:
- 从 npm registry 获取 @anthropic-ai/claude-code 最新版本
- 自动更新 proxy.js 中的 CLI_VERSION
- 支持 --check(仅检查)/ --force VER(强制指定)
- 建议 cron 每天 03:00 ET 运行
|
2026-03-25 11:55:24 +08:00 |
|
win
|
eeca6c90a4
|
fix: 时区改为 America/New_York(出口 IP 在纽约)
|
2026-03-25 11:52:14 +08:00 |
|
win
|
6958b0dedb
|
feat: macOS 指纹伪装 — TCP TTL/时间戳/时区 + H2优先 + Jitter增强
proxy.js:
- 主机身份全面改为 macOS (hostname: alex-MBP, osType: Darwin)
- macOS 版本号 (Ventura/Sonoma/Sequoia), Darwin 内核 22/23/24.x
- machineId 改为 IOPlatformUUID 格式(大写 UUID)
- arch: 70% arm64 / 30% x64(Apple Silicon 主流)
- 遥测 platform/ddtags 改为 darwin,路径改为 /Users/
- Jitter: 指数分布,80% 快(80-300ms) / 20% 慢(400-1200ms)
- H2 优先: api.anthropic.com/cloudaicompanion/generativelanguage 直接走 H2
setup-firewall.sh:
- 新增 TCP TTL 强制 = 64 (iptables mangle TTL)
- 新增 TCP 时间戳禁用 (net.ipv4.tcp_timestamps=0 + 持久化)
- 新增系统时区设置 America/Los_Angeles
- 新增 timezone 子命令、完整 status 输出
|
2026-03-25 11:50:41 +08:00 |
|
win
|
e5d78f8e56
|
refactor: 将自定义代码集中到 antigravity/ 目录和 *_antigravity.go 文件
CI / test (push) Failing after 39s
CI / golangci-lint (push) Failing after 3s
Security Scan / backend-security (push) Failing after 4s
Security Scan / frontend-security (push) Failing after 3s
- antigravity/node-tls-proxy/ ← 原 tools/node-tls-proxy
- antigravity/firewall/ ← 原 tools/firewall
- antigravity/maintenance/ ← 原 tools/maintenance
- repository/http_upstream_antigravity.go ← Node.js 代理 3 个方法(原在 http_upstream.go)
- service/identity_service_antigravity.go ← ApplyDefaultFingerprintOverrides + NewIdentityServiceWithSalt
- service/account_antigravity.go ← Gemini TLS 指纹扩展函数
对上游文件 http_upstream.go 的钩子调用精简为 2 处 if 块(共 14 行)
对上游文件 account.go Gemini 分支精简为 1 行函数调用
便于 upstream rebase 时快速识别和保留自定义改动
|
2026-03-25 11:37:27 +08:00 |
|
win
|
8b71fa1bf3
|
feat: fork 同步工具链 — workflow + sync/patch 脚本
|
2026-03-25 11:37:27 +08:00 |
|
win
|
49388f11b7
|
fix: proxy.js 修复
|
2026-03-25 11:37:27 +08:00 |
|
win
|
44539d5b32
|
feat: Antigravity (googleapis.com) 也走 Node.js TLS 代理,消除 Go 指纹
|
2026-03-25 11:37:27 +08:00 |
|
win
|
1ccf6613e2
|
feat: 遥测优化 — 丰富事件 + 双批次 + model 解析 + beta 常量
|
2026-03-25 11:37:27 +08:00 |
|
win
|
75c3c01f46
|
feat: 遥测模拟 — 模拟 Claude CLI 的 event_logging + DataDog 日志
基于真实 Claude CLI 2.1.81 抓包数据实现:
- POST api.anthropic.com/api/event_logging/batch(请求前后自动发送)
- POST http-intake.logs.us5.datadoghq.com/api/v2/logs
- 事件类型:tengu_started, tengu_init, tengu_api_request_started/completed
- 每个账号独立 session_id + device_id
- process_metrics base64 编码(匹配真实格式)
- 可通过 TELEMETRY_ENABLED=false 关闭
|
2026-03-25 11:37:27 +08:00 |
|
win
|
068b0cbc39
|
revert: 移除 Sora sidecar,还原 sora_sdk_client.go 到原版
|
2026-03-25 11:37:27 +08:00 |
|
win
|
3c8ffd3efc
|
fix: 双模型审查 Critical 修复
1. Sora session_key 按 accountID 隔离(消除跨账号指纹关联)
2. 有 per-account 代理的 Sora 账号跳过 sidecar(保持代理 IP)
3. 请求体用 base64 编码传输(防止二进制数据损坏)
4. Node.js 代理 Body 用 GetBody 安全复制(修复重试时 Body 枯竭)
|
2026-03-25 11:37:27 +08:00 |
|
win
|
4a92f1903f
|
fix: 架构审查修复 3 个 bug
1. instanceSalt 空值兼容:salt 为空时保持原始 hash 格式不变
避免升级后所有 user_id hash 突变触发 Anthropic 检测
2. doViaNodeTLSProxy 克隆请求:不修改原始 req 对象
修复重试时 URL 已被改写导致请求失败
3. Sora doSoraBackendJSON 漏改:补上 sidecar 路由
|
2026-03-25 11:37:27 +08:00 |
|
win
|
99c77c4641
|
fix: 有 per-account 代理的账号不走 Node.js 代理,防止 IP 变化触发风控
|
2026-03-25 11:37:27 +08:00 |
|
win
|
4037eebd37
|
feat: Sora 请求优先走 curl_cffi sidecar(Chrome 指纹绕过 Cloudflare)
|
2026-03-25 11:37:27 +08:00 |
|
win
|
60c532ea7f
|
feat: Sora curl_cffi sidecar — Chrome TLS 指纹绕过 Cloudflare
- 新增 sora-curl-cffi-sidecar 容器(Python + curl_cffi + chrome131)
- docker-compose.tls-proxy.yml 集成 sidecar,sub2api 自动连接
- 会话池复用,避免重复 TLS 握手
- 镜像 zfc931912343/sora-curl-cffi-sidecar:latest (amd64+arm64)
|
2026-03-25 11:37:27 +08:00 |
|
win
|
4bca447e33
|
fix: Node.js TLS 代理仅拦截 api.anthropic.com,修复 Sora 404
|
2026-03-25 11:37:27 +08:00 |
|
win
|
f5fdd41aea
|
feat: 实例级隔离 — salt + 指纹版本可配置
- 新增 gateway.instance_salt: 不同 sub2api 实例对相同输入产生不同 hash
影响 user_id 重写和 session hash,防止跨实例指纹关联
- 新增 gateway.fingerprint_defaults: CLI 版本号/SDK 版本/OS/Arch 可配置
每个实例可设不同值,与其他 sub2api 部署区分
- constants.go + identity_service.go 支持启动时覆盖默认指纹
- wire_gen.go 启动时读取配置并应用覆盖
|
2026-03-25 11:37:27 +08:00 |
|
win
|
f68dc13a1a
|
fix: 更新 Claude CLI 指纹版本 2.1.22→2.1.81, SDK 0.70.0→0.80.0
|
2026-03-25 11:37:27 +08:00 |
|
win
|
d38b672d54
|
fix: Node.js TLS 代理仅拦截 Anthropic 请求(DoWithTLS 路径)
- Do() 去掉 Node.js 代理拦截,Antigravity/Google 请求走原路径
- 只有 DoWithTLS 且 enableTLSFingerprint=true 时走 Node.js 代理
- 按平台分治:Anthropic → Node.js 原生 TLS,Google → 原有 uTLS/直连
|
2026-03-25 11:37:27 +08:00 |
|
win
|
3b42e71b12
|
fix: 重写 proxy.js — 预收集 body + H1/H2 自适应,本地测试 4/4 通过
|
2026-03-25 11:37:27 +08:00 |
|
win
|
37a1b404e9
|
feat: 智能 H1/H2 自适应 — 首次 H1 秒挂自动切 H2 并缓存
- 首次请求走 HTTP/1.1,如果 socket hang up < 2s 自动切 HTTP/2
- H2 主机缓存在内存中,后续请求直接走 H2(如 googleapis.com)
- H2 session 池复用 + 空闲超时自动清理
- 详细日志:proxy_request → proxy_response/error,含协议标识
- 解决 googleapis.com 强制 H2 导致请求失败的问题
|
2026-03-25 11:37:27 +08:00 |
|
win
|
9586cf1110
|
fix: 去掉 H2/ALPN 复杂度,回到纯 https.request + 动态主机 + 响应日志
|
2026-03-25 11:37:27 +08:00 |
|
win
|
4f82ce23a9
|
feat: Node.js TLS 代理支持 HTTP/2 + 动态主机路由
- proxy.js: 自动探测上游 ALPN (h2/http1.1),按需选择协议
- proxy.js: X-Forwarded-Host 动态路由,支持任意上游主机
- proxy.js: HTTP/2 session 缓存 + 空闲超时自动清理
- Go: 所有 HTTPS 上游请求统一走 Node.js 代理,无域名白名单
- 解决 googleapis.com 要求 HTTP/2 导致 socket hang up
|
2026-03-25 11:37:27 +08:00 |
|
win
|
0086cfdfe8
|
fix: Node.js TLS 代理对所有 HTTPS 上游生效,去掉域名白名单
- 移除 proxy_hosts 白名单限制和 shouldRouteViaNodeProxy
- 所有 HTTPS 上游请求统一走 Node.js 代理
- 通过 X-Forwarded-Host 动态识别目标主机
- Anthropic / Gemini / 任意上游自动适配
- 移除诊断日志(已定位问题)
|
2026-03-25 11:37:27 +08:00 |
|
win
|
cb035e4637
|
diag: 在 DoWithTLS 路径也添加诊断日志
|
2026-03-25 11:37:27 +08:00 |
|
win
|
47fba12a75
|
fix: Node.js TLS 代理按 proxy_hosts 白名单过滤 + 诊断日志
- 新增 proxy_hosts 配置:可配置需要走 Node.js 代理的主机列表
- 默认仅代理 api.anthropic.com,Gemini/Sora 走原路径
- 添加 warn 级别诊断日志,输出请求的 scheme/host/hostname/should_route
- 用于定位 Anthropic 请求未命中 Node.js 代理的原因
|
2026-03-25 11:37:27 +08:00 |
|
win
|
45c90b22eb
|
fix: Node.js TLS 代理按主机白名单过滤,Gemini 走原路径
- 新增 proxy_hosts 配置:白名单内的主机走 Node.js 代理
- 默认仅代理 api.anthropic.com
- Gemini/Sora 等非 Anthropic 请求自动走原有 uTLS 路径
- 解决 Gemini 请求经 Node.js 代理后 socket hang up 的问题
|
2026-03-25 11:37:27 +08:00 |
|
win
|
5de1618e08
|
fix: Node.js TLS 代理动态识别上游主机
- Go: 通过 X-Forwarded-Host 传递原始目标主机给 Node.js 代理
- Node.js: 读取 X-Forwarded-Host 动态连接到正确的上游主机
- 所有 HTTPS 上游请求统一走代理,不再固定绑定 api.anthropic.com
- Gemini/Sora 等不同上游自动识别,无需手动配置
|
2026-03-25 11:37:27 +08:00 |
|
win
|
71a068c193
|
fix: Node.js TLS 代理对所有 HTTPS 上游请求生效
Do() 方法新增 Node.js 代理检查,不再依赖账号级 TLS 指纹开关。
当 node_tls_proxy.enabled=true 时,所有 HTTPS 上游请求统一走
Node.js 代理,确保 JA3/JA4 指纹一致。
|
2026-03-25 11:37:26 +08:00 |
|
win
|
8cac4269aa
|
feat: Node.js TLS 指纹代理 + 网络隔离防泄露
- 新增 Node.js TLS Forward Proxy (tools/node-tls-proxy/)
原生 Node.js TLS 栈发起上游 HTTPS,JA3/JA4 天然匹配 Claude CLI
SSE 流式透传,支持上游 HTTP CONNECT 代理
零依赖,Node.js 24.13.0 锁定版本
- Go 集成 (config.go + http_upstream.go)
新增 NodeTLSProxyConfig 配置
DoWithTLS 优先走 Node.js 代理模式,URL 重写 https→http://localhost:3456
- Docker 网络隔离 (docker-compose.tls-proxy.yml)
sub2api 容器仅 internal 网络,物理隔离外网
node-tls-proxy 唯一出站通道,IPv6 内核级禁用
- iptables 防泄露脚本 (tools/firewall/)
QUIC/UDP 443 全局 DROP,仅 nodeproxy 用户可出站 TCP 443
- 镜像切换为 zfc931912343/ 仓库
|
2026-03-25 11:37:26 +08:00 |
|
Wesley Liddick
|
0f03393010
|
Merge pull request #1234 from Zqysl/qingyu/fix-ops-runtime-log-controls-layout
fix(ops): prevent runtime log controls UI overflow
|
2026-03-24 19:13:47 +08:00 |
|
Wesley Liddick
|
4b1ffc23f5
|
Merge pull request #1240 from Zqysl/qingyu/fix-openai-passthrough-429-rate-limits
fix(openai): persist passthrough 429 rate limits
|
2026-03-24 19:02:40 +08:00 |
|
Wesley Liddick
|
c7137dffa8
|
Merge pull request #1218 from LvyuanW/openai-runtime-recheck
fix(openai): prevent rescheduling rate-limited accounts
|
2026-03-24 15:21:18 +08:00 |
|
Wesley Liddick
|
5a3375ce52
|
Merge pull request #1227 from liruiluo/codex/dockerignore-deploy-data
Ignore deploy runtime data in Docker context
|
2026-03-24 15:20:10 +08:00 |
|
Wesley Liddick
|
8e834fd9f5
|
Merge pull request #1204 from Eilen6316/fix/smtp-config-stability-and-refresh-test
fix(settings): prevent SMTP config overwrite and stabilize SMTP test after refresh
|
2026-03-24 15:19:24 +08:00 |
|
Wesley Liddick
|
02046744eb
|
Merge pull request #1212 from alfadb/fix/filter-empty-text-blocks-nested
fix(gateway): 修复 tool_result 嵌套内容中空 text block 导致上游 400 错误
|
2026-03-24 15:19:01 +08:00 |
|
Wesley Liddick
|
68d7ec9155
|
Merge pull request #1220 from weak-fox/feat/account-privacy-mode-filter
feat: 管理员账号列表支持按 Privacy 状态筛选
|
2026-03-24 15:18:30 +08:00 |
|
Wesley Liddick
|
7537dce0f0
|
Merge pull request #1230 from LvyuanW/bulk-openai-oauth-ws-mode-pr
Add bulk OpenAI OAuth WS mode editing
|
2026-03-24 15:17:13 +08:00 |
|
Wesley Liddick
|
5f41b74707
|
Merge pull request #1242 from Ethan0x0000/feat/anthropic-openai-endpoint-compat
支持 Anthropic Responses / Chat Completions 兼容端点并完善会话一致性与错误可观测性
|
2026-03-24 15:16:26 +08:00 |
|