【开源推广】pi-custom-header:让Pi动态伪装Codex/Claude Code请求头,内置模板,告别手动配置

这真的对嘛 2026-08-14 18:01 1

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:



  • 我的帖子已经打上 开源推广 标签:

  • 我的开源项目完整开源,无未开源部分:

  • 我的开源项目已链接认可 LINUX DO 社区:

  • 我帖子内的项目介绍,AI生成、润色内容部分已截图发出:

  • 以上选择我承诺是永久有效的,接受社区和佬友监督:


以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出




简单介绍


一个可以为 Pi 提供动态的请求头伪装的插件,支持伪装 Claude Code、Codex 客户端请求头。


有不少中转站都限制 Claude Code/Codex 客户端,Pi 虽然可以在 models.json 里自定义请求头,但还是不够方便、不够彻底,只能自定义静态的请求头,而且要么是整个 provider 要么是单个 model,像我这种用一个网关包含全部模型的,一个一个模型单独配实在麻烦,所以就做了这个插件。


动态在哪呢?例如 codex 的 x-codex-window-idx-codex-turn-metadatax-client-request-id 这些随对话 id 改变的部分,是基础的请求头覆写管不到的地方。


安装使用



  1. 先从 git 安装插件


pi install git:github.com/rays1d/pi-custom-header



  1. 手动创建配置文件



  • 建立配置目录 ~/.pi/agent/extensions/pi-custom-header/

  • 复制一份配置文件 config.json 到插件配置目录,模板在这里 .pi/agent/git/github.com/rays1d/pi-custom-header/config

  • 复制请求头模板 claude-code.headerscodex.headers 到插件配置目录, 模板在这里 .pi/agent/git/github.com/rays1d/pi-custom-header/templates



  1. 编辑配置文件


配置文件长这个样子




config.json

{
"rules": [
{ "match": { "provider": "Axon", "modelId": "gpt-5.5" }, "template": "codex.headers" },
{ "match": { "provider": "Axon", "modelIdRegex": "^claude-" }, "template": "claude-code.headers" }
],
"blacklist": ["Authorization", "Content-Length", "Host", "Content-Encoding", "Connection", "Accept-Encoding"],
"sandbox": "windows_sandbox",
"debug": false
}



供应商 provider 和 模型名 modelId 来源于 models.json,模型支持 modelId 完全匹配和 modelIdRegex 正则匹配,所以上面模板里面的应用规则就是 gpt-5.5 用 Codex 请求头,claude 开头的模型全都用 Claude Code 请求头。其他更细致的部分可以看 readme。


请求头模板可以自行抓包,照着改动。内置的是根据我自己抓包写的模板。


一些说明


这个插件个人用了一段时间了,主要就是用来伪装 Codex,还没遇到过被拦截的情况。至于 claude 模型没怎么测试过,Claude Code 请求头比 Codex 简单不少,静态的基本可以覆盖到。Any 站这种不用考虑,还要验证请求体的,没什么伪装的必要。


项目地址:


最新回复 (2)
  • 这真的对嘛 楼主 08-21 09:43
    1

    忘记写更新了,更新了一个功能,增加供应商级别和全局级别的请求头覆盖,不用按模型单独添加


    优先级:model > provider > global > Pi 自身,model 级别的生效之后,后面低优先级的就完全不生效,防止重复。


    背景:Pi 原生请求头里的 User-Agent: OpenAI/JS 6.26.0 默认会被 cloudflare 屏蔽导致 403,导致有些站无法使用。当然这个也可以在网关里面配,给对应渠道去掉透传,就不会传过去 Pi 的请求头被屏蔽了。


    配置参考:


    { "match": { "provider": "Axon" }, "template": "custom.headers" },

    这个就是 Axon 里的所有模型都启用 custom.headers 里面的配置,custom.headers 里面可以写个 user-agent 把 Pi 的覆盖掉。


    插件自带的 custom.headers 只写了 codex 的基础的 user-agent 和 originator,可以自己新建一个模板文件,写入自定义的内容。


    同理匹配规则直接留空,就可以启用全局的请求头覆盖:


    { "match": { }, "template": "custom.headers" },
  • 宫灵紫凝 08-21 21:33
    2

    佬,我怎么感觉用了这个缓存命中率貌似降低了

* 帖子来源Linux.do
返回