今日份koipy | koipy NEWS
Kanalga Telegram’da o‘tish
一个代理平台的测试工具(Telegram Bot) 此频道发布koipy程序包、更新日志 koipy文档: https://koipy.gitbook.io/koipy
Ko'proq ko'rsatishMamlakat belgilanmaganToif belgilanmagan
232
Obunachilar
+124 soatlar
+87 kun
+1730 kun
Postlar arxiv
+1
现在,你可以在本地化文件
zh_CN.yml 中的任何文本书写描述按钮颜色的代码,来达到为按钮添加颜色的效果(TG仅支持如上图所示的三种颜色)
⚠️注意,任何包含描述颜色代码的文本都需要完成结构闭合(在文本末尾加入`{}` 表示结束)🔔Koipy v2.0.3-dev 发布包
⬆️更新日志:
1. 重写了miaospeed客户端实现,使用面向对象编程思想解耦模块
2. 更新geoip脚本
3. 修复进度条百分比数值异常溢出的问题
4. 修复Telegram话题模式下导致无法发送测试结果的问题
5. 修复矩阵数据列的排序异常
6. 修复节点类型文本大小写处理异常
🔔Koipy v2.0.2 发布包
⬆️更新日志:
🎉 更新内容
1. 小幅优化了启动速度
2. 修复内置的订阅转换无法解析纯URI
3. 优化本地化系统
4. 固定CA证书,使用koipy自身携带的CA证书,现在系统根证书不值得信任
5. 支持mtls双向证书验证,即koipy(客户端)可以验证后端的证书,koipy也可以提供自身证书给后端协商验证(需要miaospeed版本4.7.2)
6. 移除无用代码
7. 支持 age X25519 armor 加密订阅解密,可在 subscription.age 中配置。关于age加解密,详见:https://github.com/MetaCubeX/mihomo/commit/358fa5eb2493901ef4078de948f2a6f4fd1bf055
8. 原生实现了本地内置的订阅转换,只需要将 subconveter.mode=builtin 即可启用内置转换。
9. 指令参数设置的线程上限从64提升到256
10. 内置的订阅转换支持返回原始订阅中的dns配置
11. 不安全的后端配置将在绘图结果中显示,详见:https://koipy.gitbook.io/koipy/doc/wen-ti-da-yi/hou-duan-an-quan-xing
12. 新的配置项:image.showUnsafeTips 用于关闭不安全的后端提示(请确保你真的明白你的后端通信处于安全隧道中)
13. 修复矩阵数据列的排序异常
14. 修复节点类型文本大小写处理异常
miaospeed v4.7.3 (下个月1号发布)
1. 修正了命令行参数的描述错误
2. 移除 DialTCP 中的本地 DNS 预解析,修复 GEO-DNS 泄漏
关于第二点修复的解释
1. 当配置了 mihomo://DNS配置 时,applyMihomoDNSForDial 会在本地将目标域名(如 netflix.com)解析为 IP 后交给代理节点。这导致节点连接到的是从miaospeed 所在位置解析到的 CDN IP,而非节点自身所在地理位置的 IP,破坏了
Netflix、Disney、Cloudflare 等域名的 GEO-DNS 解析。
2. 代理适配器本身会在节点侧进行 DNS 解析——本地预解析对 GEO 敏感域名。既无必要,也会导致错误的结果。
关于 TLS 客户端证书验证的历史说明
### 问题概述
在
ee0e43d 提交之前,`preconfigs/certs.go` 中的 MakeSelfSignedTLSServer() 从未设置 tls.Config 的 ClientAuth 字段。Go 标准库对该字段的零值是 `tls.NoClientCert`,语义为:**服务端不请求、不验证、完全忽略客户端证书**。
这意味着即使运维人员给客户端分发了证书并期望实现 mTLS,客户端证书在 TLS 握手阶段完全被跳过了——服务端连 `CertificateRequest` 都不会发送。
为什么是历史遗留
MakeSelfSignedTLSServer() 从项目Fork早期就已存在,原仓库中只做了"加载服务端自签证书":
// ee0e43d 之前的 certs.go
func MakeSelfSignedTLSServer() *tls.Config {
cert, _ := tls.X509KeyPair(...)
tlsConfig := &tls.Config{
Certificates: []tls.Certificate{cert},
// ClientAuth 未设置 → Go 零值 = tls.NoClientCert
}
return tlsConfig
}
-mtls 命令行参数(`cli_server.go:28`)虽然名为 "enable embedded certs for TLS verification",但实际上只做了**单向 TLS**——服务端出示证书给客户端验证,客户端证书完全不管。描述与行为不一致。
Go crypto/tls 的默认行为
ClientAuth 是 tls.ClientAuthType 类型,底层是 `int`,零值为 `0`,对应 `tls.NoClientCert`:
| 值 | 行为 |
| ---------------------------- | --------------------------------------------------------- |
| `NoClientCert`(默认) | 不发送 CertificateRequest,客户端证书被完全忽略 |
| `RequestClientCert` | 发送 CertificateRequest,但收到也不验证 |
| VerifyClientCertIfGiven | 发送 CertificateRequest,客户端提供了就验证,不提供也放行 |
| RequireAnyClientCert | 必须提供证书,不验证链 |
| RequireAndVerifyClientCert | 必须提供且必须通过 CA 验证 |
Go 的默认行为是不请求也不验证,即使客户端发了也当没看见。
### 4.7.2 的修复
在这个版本中,做了两件事:
1. **新增 -clientca 参数**(`cli_server.go`):允许运维指定用于验证客户端证书的 CA 证书路径
2. **在 MakeSelfSignedTLSServer() 中补上 ClientAuth 设置**(`preconfigs/certs.go`):
if clientCAPool != nil {
tlsConfig.ClientAuth = tls.VerifyClientCertIfGiven // 可选验证
tlsConfig.ClientCAs = clientCAPool
}
设计选择是 `VerifyClientCertIfGiven`(可选验证),而非 `RequireAndVerifyClientCert`(强制),原因是:
- 兼容已有部署——不传 -clientca 时行为完全不变量
- 允许混合场景——部分客户端持有证书、部分不持有
## 总结
这是一个长达3年的历史债,但因为项目并没有那么出名,所以一直无人发现,或者是发现了无人在意🔔Koipy v2.0.1 发布包
⬆️更新日志:
1. 修复了语言包切换时判定成功的逻辑
2. 归一化本地化中的占位符
3. 切换语言包后将显示保存配置的按钮
4. 修正配置模板中本地化语言包的地址例子
5. 本地化语言包加载失败时将静默跳过加载
6. 完善英语语言包中的本地化字段
7. 测速线程设置上限从
64 调整为 256
8. 现在拥有用户权限且在非邀请测试的场景中将默认启用 runtime.enableDNSInject 运行时配置
9. 添加了DNS动态注入时的日志提示。当runtime.enableDNSInject=true时,会明确在后台日志中告知
10. 移除webapi的废弃路由
11. invite测试下,每个UID仅会同时存在一个会话。意味着无法通过同时发起两个 /invite
12. 现在 webapi.password 在 webapi.enable=true 时是必填配置
13. sub-store 模板样例添加 fakeSub=true 的查询参数。参见:https://t.me/zhetengsha/5986
14. 修复私聊中无法使用 /invite 指令
15. invite内联键盘的创建优化
16. 重构 /invite 中上下文管理
17. 修复错误的超时计时器。之前有60秒的接收订阅计时(实际为57秒),现已修正为正确数值
18. 修复invite极端情况下的变量可能出现空值但并未正确处理的问题
19. 移除内置的web面板静态路由
20. 将 webapp 配置项更改为webapi,功能不变
21. 添加更多协议解析(OpenVPN等)
22. 修正了mihomo dns覆写的优先级。现在runtime.enableDnsInject 优先于后端配置里 DNSServer
23. 移除了内部函数的 quote参数。
24. 优化了多后端拓扑图的排版问题
25. 更新依赖文件
26. 改进 Web 配置 API 安全策略,强化来源校验并增加鉴权失败限流
27. 优化 Web 配置管理入口,新增 Koiboard 路由及静态资源兼容
28. 指令参数支持多后端指定,做法是写多个 s=\<后端id\>
29. 指令参数新增 t/d 短别名,与 thread/duration 效果相同
30. 升级bot依赖 kurigram 到 2.2.22
31. webapi功能已实现,现在可以通过HTTP请求的方式来管理koipy的配置文件
32. 针对webapi功能写了一个webapp,你可以在 @koipybot 的简介页面点击webapp按钮即可打开使用。或者直接访问这个网址:https://koiboard.vercel.app
33. 新的配置: webapp 子类,可用于开启webapi,配合web面板使用,前往配置文件实例查看具体配置
34. webapp注意事项。建议配合Nginx反向代理,否则可能只有回环地址的api能访问
35. 修复多后端联测实时渲染异常问题
36. 改进发送图片的队列稳定性
37. dev版本构建添加 arm64 runner
38. 修复多后端翻页按钮
39. 优化多后端拓扑的绘图排版
40. 现在测试脚本返回 background (全小写)字段会让绘图背景色生效
41. 修复了深色背景图下协议Logo显示异常的问题+1
在压测情况下,我们有幸见到了以VLESS协议为载体的网络下行带宽测试,最高峰值速度突破到了20Gbps
这种极端情况下,影响速度的因素有:
1. 测速的大文件链接对应的服务器带宽是否充足
2. 测速程序(miaospeed)设计瓶颈
3. 协议实现瓶颈
4. Go语言性能瓶颈(但应该还达不到上限)
前端面板已经初步可用,现已开源,技术支持来自 codex 老师❤️
https://github.com/AirportR/koiboard
在线体验:https://koiboard.vercel.app/
🔔Koipy v2.0.1-dev 发布包
⬆️更新日志:
1. 修复私聊中无法使用
/invite 指令
2. invite内联键盘的创建优化
3. 重构 /invite 中上下文管理
4. 修复错误的超时计时器。之前有60秒的接收订阅计时(实际为57秒),现已修正为正确数值
5. 修复invite极端情况下的变量可能出现空值但并未正确处理的问题
# 往期更新
2026-05-30
2026-05-07
2026-04-13
2026-03-20
2026-03-19
2026-02-14#置顶通知
koipy 的文档目前尚未更新 v2.0.0 版本之后新增的内容
* 由于人力有限,需要时间补充
如果你愿意贡献文档内容,可前往此仓库直接PR文档:
https://github.com/koipy-org/koipy
全部的文档位于:
https://github.com/koipy-org/koipy/tree/master/doc
在线渲染后的文档地址:
https://koipy.gitbook.io/koipy
如果你正在使用 AI agent 工具,考虑加入以下skill以让AI更好的协助编辑文档:
https://gitbook.com/docs/creating-content/ai-coding-assistants-and-skillmd
