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
羽毛球分组比赛记分
小程序二维码

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

小夜