Skip to content

[Feature] 增加客户端身份伪装(Fake User-Agent / Client Emulation)以通过公益免费中转校验 / Add client-identity preset (fake UA / client emulation) to pass public free-relay client checks #97

Description

@Alonso-li

Problem / 问题

连接公共免费中转(公益站 / 免费代理)时,不少站点会校验客户端身份(User-Agent 或 x-app / claude 相关请求头),只放行官方客户端。而 PI-Desktop 目前:

  • 默认请求 UA 是 pi (macos 24.x; arm64)(来自 getPiUserAgent()),这类"未知客户端"UA 很容易被公益站拒绝或降速;
  • 设置 UI 里没有自定义请求头(Custom headers)字段,供应商/模型设置里也没有 User-Agent 覆盖入口;
  • 只有 Claude 兼容模式会自动伪装成 claude-cli/<version> + x-app: cli + anthropic-dangerous-direct-browser-access: true;而 OpenAI 兼容 / 自定义供应商(ioll、relay 等,最常见的公益站类型)走的仍是 pi (...) 这个 UA。

Proposed change / 期望改动

在供应商(或模型)设置中增加**"客户端身份"选项**,可以自动通过大部分公益站验证:

  1. 一键预设仿冒客户端claude-cli/<version>(附带 x-app: clianthropic-dangerous-direct-browser-access)、codexopencode(附 x-opencode-client)、cursorvscode,以及自定义 UA 字符串
  2. 对 OpenAI 兼容端点同样生效(目前只有 Claude 兼容路径会伪装身份,OpenAI 兼容路径缺这个能力);
  3. 身份设置为供应商级或全局,切换无需重启。

内部实现参考(0.13.11 现状):

  • 合并顺序已经是 { "User-Agent": getPiUserAgent(), ...model.headers, ...optionsHeaders },需要补的是面向用户的"客户端身份"下拉 + 支持 OpenAI 兼容路径

Alternatives / 其他方案

  • 文档引导用 SDK 已有的 ANTHROPIC_CUSTOM_HEADERS / OPENAI_CUSTOM_HEADERS 环境变量(非 UI,且对大多数用户不可见);
  • 先只加"供应商自定义请求头"字段,UA 由用户自己填写(治标,无预设)。

Additional context / 补充信息

  • 版本:PI-Desktop 0.13.11(macOS)
  • 用途:公共免费中转通常要求客户端与官方一致,这是它们的常见校验手段;希望 PI-Desktop 提供一个合规、便捷的入口,而不是让每个用户去改环境变量。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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