分享一个把微软 M365 Copilot 转成 OpenAI / Claude 兼容 API 的网关:Copilot Bridge(每账号独立 IP 代理是真香)

▎先啰嗦几句开头

这个东西不是我一个人拍脑袋撸出来的,站在好几个开源作者肩膀上才拼起来的,必须先好好谢一谢:
:folded_hands: @uefi2333 —— m365-native 的上游作者。整个 ChatHub(SignalR WebSocket)网关的骨架、鉴权与协议转换思路都源自这个项目,我是在它基础上做了重品牌、补功能和换前端。
:folded_hands: @tanmoumou252 —— 群里那位老哥分享的 token 估算口径。微软 ChatHub 返回里根本不带 usage 字段,是他那套「结构化 + 跳空格启发式」的算法让 Token 统计终于不再是瞎猜。
:folded_hands: @HEXUXIU —— M365-Copilot2API 的作者。很多实现细节是外科式参考它才跑通的。
特此谢过几位,代码我都是外科式借用、没乱 merge,出处也都在仓库里标了。
另外参考了几位作者的GitHub项目,实在是记不起来了找不到作者原项目了,在此做统一感谢
────────────────────────────────────────

▎这项目是干啥的

一句话:Copilot Bridge 把微软的 M365 Copilot ChatHub 转成业界通用的 OpenAI / Anthropic 兼容 API。你手头那些 OpenAI SDK、Claude SDK、各类 Agent 框架、甚至 curl,都能直接拿来调 M365 Copilot,不用关心微软那套私有协议。
支持 /v1/chat/completions、/v1/responses、/v1/messages,流式、多模态、工具调用都在。多账号池轮询、限流自愈、API Key 有效期、Token 统计这些也都有。
但今天这篇只重点聊一个我最想安利的特性:每个账号都能单独配置 IP 代理。
────────────────────────────────────────

▎:star: 重点:每个账号,独立出口 IP
做账号池的人都知道,最怕的就是「一堆账号从同一个 IP 出去,被微软一眼看穿、集体风控」。Copilot Bridge 的做法很干脆——代理是配在「账号」维度上的,不是全局一个。
也就是说:
· 你有 10 个 M365 账号,可以给每个账号配不同的出口代理 IP;
· 该账号的 ChatHub WebSocket 连接、以及它的 token 刷新,全部走它自己的那条代理;
· 留空 = 直连,不强制。你可以一部分账号走代理、一部分直连,混着来也行。
多账号 + 多 IP,被关联、触发风控的概率直接降一个量级。这是我觉得这个项目最值得单独拿出来说的点。

▎代理怎么填(留空即直连)
在账号行「代理」输入框里填下面任意一种格式。
【格式一】纯 host:port,默认按 SOCKS5
1.2.3.4:1080
【格式二】SOCKS5 标准写法
socks5://1.2.3.4:1080
【格式三】SOCKS5 带账号密码(标准三段式)
socks5://user:[email protected]:1080
【格式四】SOCKS5 带账号密码(非标准四段式,部分服务商常用)
socks5://1.2.3.4:1080:user:pass
【格式五】SOCKS5 + 远程 DNS(域名由代理解析)
socks5h://1.2.3.4:1080
【格式六】SOCKS4(可带 user:pass@)
socks4://1.2.3.4:1080
【格式七】HTTP 代理(CONNECT 隧道)
http://1.2.3.4:8080
【格式八】HTTP 代理带账号密码
http://user:[email protected]:8080
【格式九】HTTPS 代理(真 TLS;仅对「连代理」这一段跳过证书校验,目标站仍正常校验)
https://1.2.3.4:8443
(说明)协议识别源码在 internal/proxy/proxy.go:http(s)://、socks5/socks5h/socks4:// 都支持标准三段式 [user:pass@]host:port 和四段式 host:port:user:pass;不写 scheme 默认走 SOCKS5。

▎:warning: 两个新手必踩的坑(我都踩过了)

坑 1:很多标着「HTTPS 代理」的服务,其实只是个 HTTP CONNECT 端点。这种你该填 http://,填 https:// 反而连不上。https:// 只留给那些真的用 TLS 监听客户端端口的代理。
坑 2:密码里带 @ 或 : 时,标准三段式 user:pass@host:port 会解析错。请改用四段式 host:port:user:pass(user/pass 里别再带冒号)。

▎配完怎么验证连通性

单账号测试:填好代理点「测试」,直接返回出口 IP 和延迟(绿 ✓ / 红 ✗),一眼知道这条代理通不通、出去的是哪个 IP。
一键批量检测:账号列表上有个「一键检测代理」按钮(旁边还并排放了「重置统计」),点一下并发探测所有配了代理的账号,每行内联显示结果,顶部横幅汇总「成功 N / 失败 M」,失效代理秒定位。
关于证书:只有「连到代理」那一段会 InsecureSkipVerify(兼容过期/自签代理证书,和指纹浏览器一个逻辑),目标站 Microsoft / ipify 的 TLS 仍然正常校验,安全不受影响。
────────────────────────────────────────

▎顺手提一嘴的其他特性(不展开了)

:glowing_star: API Key 定时有效期 —— 创建的访问密钥可设「永久 / N 天到期」,过期自动 401 失效;随时能改回永久,密钥以 hash 存盘。
:glowing_star: Token 统计估算 —— 在微软不返回 usage 的情况下给出可信参考值(gpt- 模型走真 tiktoken 分词器,其余走社区启发式),顶部汇总 + 每账号明细,还有「重置统计」按钮一键归零,且统计跨重启保留(落盘 stats.json)。
:glowing_star: 限流 / 健康自愈 —— 实时显示账号状态,429 自动冷却 2 分钟并切到健康号。
:glowing_star: Web 控制台 —— 账号池 / 添加账号(内置 PKCE OAuth)/ 访问配置 / 运行日志 / 设置,五页开箱即用。
────────────────────────────────────────

▎项目地址 & 起手式

GitHub:GitHub - shenping1200/m365-copilot-bridge: M365 Copilot ChatHub gateway — OpenAI-compatible API (Copilot Bridge) · GitHub
Docker 起一个(默认监听 127.0.0.1:4141):
git clone GitHub - shenping1200/m365-copilot-bridge: M365 Copilot ChatHub gateway — OpenAI-compatible API (Copilot Bridge) · GitHub
cd m365-copilot-bridge
mkdir -p data secrets
printf ‘%s\n’ ‘换成你自己的长随机管理员密码’ > secrets/m365_admin_password
chmod 600 secrets/m365_admin_password
docker compose build && docker compose up -d
浏览器开 http://127.0.0.1:4141/ → 登录 → 完成微软授权 → 在「访问配置」建 Key → 拿 Key 调 /v1 即可。

:warning: 合规提醒:本项目是互通网关,不是绕过鉴权的工具。请只使用你自己有权限的 Microsoft 账号与租户;默认只绑 localhost,对外暴露前一定加 TLS 和访问控制层。
────────────────────────────────────────
统一贴一些截图,供大家了解项目情况



就这些。核心一句话:想给每个 M365 账号配独立出口 IP 来分散风控,Copilot Bridge 这套每账号代理机制基本是开箱即用的,填上 host:port 就能跑。有问题欢迎回帖交流。

如果对你有帮助, 留下个star吧,顺手这里点个赞也是十分感谢的

在使用过程中还会遇到各种问题,我会持续更新此项目,欢迎反馈使用过体验

54 个赞

站内好像也有个大佬已经整了这个呢,支持Docker部署等以后再换

1 个赞

支持

1 个赞

等等,每个账户的令牌上限到底是多少?

这个最大的弱点就是吐字太慢啊,首字6秒7秒

1 个赞

这玩意不能当做主力模型用,自动化任务交给他还是很不错的,免费的要啥自行车啊

无限

1 个赞

喂喂喂,这个ai味太大了吧 :ac01:

味大,无需多言是吧:skull:

还有我寻思我不是最开始把m365逆向的吗?为什么不去对比一下项目创建时间啊喂?!

当然了,go版本的确是由uefi2333的m365-native,我后续的确是在他的基础上完成的(最开始我是Python版本的,然后被吐槽了),而且这个项目绝对不只是这几个人完成的吧?

应该感谢全体社区做出排查问题,分析发现,反馈和进行项目的优化,调整的每一个开发者的 :xhj006:

3 个赞

你也是贡献者之一,这么长的文,你让我手动敲啊,太累了

看的太多了,记不住了,

作者独特的头像让我想起某位消失的佬友 :xhj48:

之前也发过m365的帖子

2 个赞

hmmm,其实不需要这么多的,具体细节可以塞进readme的。简单说一下加入啥了就行。

3 个赞

这个你可以让ai自己去论坛瞅瞅啊 :xhj16:

4 个赞

只能说m365算是集众多Nler大佬之力啦 :ac01:

1 个赞

很多人都在研究这个项目,免费的你们真是往死里搞啊 感谢分享

1 个赞

这种帖子赞完了再看,不过分

1 个赞

论他大神多,支持

1 个赞

毕竟社区现在都知道这玩意干嘛的,简单介绍一下就行。

直接说加了单号单IP,降低风控就可以吧

那么长的话,大概率也不是每个人能看完的:skull:

又来一个,我都挑花眼了,应该弄一个整合的

2 个赞

这个IP代理功能不错,多账号确实很香

1 个赞