Skip to content

【功能建议】用户身份隐藏功能 - 借鉴 cc-gateway 的实现 #1451

@yunjun199321

Description

@yunjun199321

Feature Request: 用户身份隐藏功能 - 向 cc-gateway 借鉴

背景

cc-gateway 是一个专门为 Claude Code 设计的反向代理,其核心功能是隐藏用户真实身份信息以防止账号封禁。通过分析 cc-gateway 的实现,建议 sub2api 借鉴其身份隐藏机制。

核心功能建议

1. 设备指纹重写 (Device Fingerprint Rewriting)

cc-gateway 重写了 40+ 维度的 env 对象,包括:

  • device_id → 固定 canonical 值
  • platform → 统一值
  • shell → 统一值
  • os_version → 统一值
  • home/home/canonical
  • working_directory → 标准化路径
  • 进程指标 (constrainedMemory, rss, heapTotal, heapUsed)

建议:新增 identity.rewrite_env 配置,允许管理员设置统一的设备指纹。

2. 用户标识重写

cc-gateway 重写了 metadata.user_idsession_id 等字段。

建议:新增 identity.rewrite_user 配置,防止用户真实身份泄露到上游。

3. 敏感 Header 剥离

cc-gateway 主动剥离:

  • x-anthropic-billing-header - 计费相关
  • x-device-id - 设备标识

建议:建立敏感 header 黑名单,在请求转发前自动剥离。

4. System Prompt 环境信息清理

cc-gateway 重写 <env> 块中的信息,甚至标准化 home 路径。

建议:如果用户把环境信息放在 system prompt 里,需要解析并重写其中的敏感环境变量。

5. 请求路径标准化

  • cc-gateway 标准化 /Users/xxx//home/canonical
  • 重写所有能识别用户身份的路径

建议:新增路径替换规则配置。

参考实现

cc-gateway 的核心重写逻辑在 rewriter.ts 中,包括:

  • rewriteBody() - 重写请求 body
  • rewriteHeaders() - 重写 HTTP headers
  • rewriteSystemPrompt() - 重写 system prompt

使用场景

  1. Claude Code 用户:不想让上游识别出多设备共用一个账号
  2. 隐私保护:用户不想暴露真实系统环境
  3. 防封禁:减少因设备指纹异常导致的账号风险

优先级建议

功能 优先级 理由
敏感 Header 剥离 P0 影响直接,容易实现
用户标识重写 P0 核心隐私保护
设备指纹重写 P1 配置复杂度高
System Prompt 清理 P1 需要解析 prompt 内容
路径标准化 P2 依赖具体场景

相关讨论:#1413

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions