dsh-custom-header:DeepSeek Harness 请求头修改与身份伪装插件

前言

在 DeepSeek Harness (DSH) 环境中,有时需要模拟特定客户端(如 Codex Desktop、Claude Code)的行为,或者清理 LLM SDK 自带的指纹头以规避风控检测。DSH 原生未提供单次请求的 Header 钩子,dsh-custom-header 插件通过拦截 fetch 传输层,直接修改出站请求的 Headers 和 Body,实现客户端身份注入、URL 重写及 Anthropic 请求体修补。

这是什么

这是由 Asaiuta 维护的一个 MIT 协议插件。它运行在 DSH 的 fetch 传输层(位于 LLM SDK 之下),负责修改发往 LLM 提供商的 HTTP 请求。插件通过中间件管道处理请求,支持多种预设客户端配置,并提供了按会话隔离的 Session ID 管理。

核心功能

  1. 客户端身份注入:从预设配置中注入 User-Agent、Originator、X-Claude-Code-Session-Id、x-opencode-* 等头部,模拟 Codex、Claude Code 等客户端。
  2. SDK 指纹剥离:自动移除 X-Stainless-* 等 SDK 运行时生成的指纹头。
  3. URL 重写:支持基于路径匹配的 URL 重写,并允许通过 appendQuery 追加查询参数。
  4. Anthropic 请求体修补:针对 /v1/messages 接口,修补请求体以绕过身份或计费系统的拦截,并注入 metadata.user_id。
  5. 会话隔离:基于 GenerateOptions.sessionId 和 AsyncLocalStorage,实现每轮对话独立的 Session ID 作用域。
  6. 403 诊断:在流式传输结束时检测 status: 403,并提供诊断提示。

安装与启用

在插件目录下执行以下命令安装:

dsh plugin --profile web add file:$(pwd)

或者直接引用插件名(如果已发布):

dsh plugin --profile web add dsh-custom-header

安装完成后,可通过以下命令验证配置是否生效:

dsh --profile web --dump-config | grep dsh-custom-header

典型用法

1. 配置文件

在 DSH 的 cordis.yml 中添加配置。以下是基本配置示例:

dsh-custom-header:
  profile: auto
  autoHosts:
    - gateway.example.com
  autoCodexProfile: codex_desktop
  codexVersion: 0.147.0
  claudeCliVersion: 2.1.220
  opencodeVersion: 1.18.18
  opencodeClient: cli
  opencodeProject: global
  claudeSystemMode: identity
  extraHeaders: {}
  urlRewrites:
    /v1/messages:
      appendQuery: beta=true
  persistProfile: true

2. 预设 Profile 选择

插件内置了多种预设配置,用于模拟不同的客户端:

Profile 用途
codex_desktop 模拟桌面端 Codex 应用,包含 codex_app/1.2026.0628 UA 和 Originator: codex_app。
codex_official 模拟官方 CLI,UA 为 codex_cli_rs/0.147.0。
codex_tui 模拟交互式 TUI 界面,UA 为 codex-tui/0.147.0。
codex_claude_plugin 模拟 Claude Code 插件,包含特定 Session ID 和 Anthropic 头部。
pi_agent 模拟 Pi 编码代理。
claude_code_messages 特化配置,用于处理 Claude Messages 请求体修补。
opencode_zen 模拟 opencode 客户端,包含特定的 Session ID 格式。
auto 根据匹配 autoHosts 动态选择配置。
off 禁用所有修改。

3. 运行时控制

在运行时,可以通过 JS API 切换 Profile 或查看状态:

ctx.dshCustomHeader.setProfile('codex_desktop')
ctx.dshCustomHeader.status()

4. 设置页面

在 DSH 的设置界面中,进入 Plugins -> Custom Header (请求头修改) 标签页,可以手动选择 Profile、编辑 autoHosts 白名单、调整版本字段以及切换 Claude 系统模式(identity / billing)。设置保存后无需重启,下一条请求即可生效。

适用场景与注意

  1. 权限要求:该插件需要你管理或拥有访问权限的服务器。它通过修改请求头来欺骗服务器端的风控或鉴权逻辑。
  2. Cloudflare 阻断:如果目标服务器使用 Cloudflare 的 TLS/Bot 边缘防护,可能需要配置不同的 API 入口、管理员白名单或本地正向代理。
  3. Node Undici 层限制:accept-language 和 sec-fetch-mode 由 Node.js 的 undici 在 fetch 调用层之下注入,本插件无法移除这些头部。如果服务器强制校验这些字段,需在本地反向代理层终止请求。
  4. UA 优先级:UA 覆盖是最终的,DSH 的 Attribution 层合并的 UA 无法覆盖 fetch 层注入的 UA。
  5. 安全默认值:默认配置 profile: 'auto' 且 autoHosts 为空时,插件不会对任何请求进行修改。

短结尾

dsh-custom-header 提供了在 DSH fetch 层面进行请求定制的能力,适合需要模拟特定 LLM 客户端行为或清理 SDK 痕迹的开发场景。其核心价值在于通过中间件机制实现了灵活的 Header 注入和 Body 修补。

  • GitHub 仓库: https://github.com/Asaiuta/dsh-custom-header
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜