• 这真的对嘛

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

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

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

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

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

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

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


    简单介绍

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

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

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

    安装使用

    • 先从 git 安装插件```

    pi install git:github.com/rays1d/pi-custom-header
    ```- 手动创建配置文件

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

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

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

    - 编辑配置文件

    配置文件长这个样子

    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 站这种不用考虑,还要验证请求体的,没什么伪装的必要。

    项目地址:

    github.com

    图片

    GitHub - rays1d/pi-custom-header: 一个可以为 Pi 提供动态的请求头伪装的插件,支持伪装 Claude Code、Codex...

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

    主楼
  • 这真的对嘛

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

    优先级: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" },

    #1
  • 宫灵紫凝

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

    #2

发表回复

登录后回复