中国大陆访问 GitHub 的本地加速器 —— 免插件、免服务器、后台仅 12MB。 clone、push、Release 下载、raw 文件、头像、网页浏览全场景加速,其余网站流量完全不受影响。 直连流量本机直达 GitHub 官方边缘,不经任何第三方;大文件镜像链虽经公共镜像,凭据(Cookie/Authorization)一律剥离不外泄。
本机跑一个代理(127.0.0.1:7810)+ 一个管理页面(127.0.0.1:7811)。它只接管 GitHub 系域名:
- 不查 DNS:内置 GitHub 真实 IP 表(
plans.json),DNS 污染直接绕过 - 连不上就换:IP 按表逐个试,坏的垫底自动降级,单点故障只慢不掉
- TLS 指纹是 Chrome 同款:用 BoringSSL(Chrome 自己的 TLS 库)+ 伪装 SNI,绕过针对明文域名的阻断
- 大文件多一条路:Release/源码包走镜像串行链,直连全灭时仍能下载
与常见方案对比:
| 方案 | 免插件 | 免服务器/账号 | clone/push | 后台占用 | 只碰 GitHub |
|---|---|---|---|---|---|
| GitPort GitHub | ✅ PAC 一键 | ✅ | ✅ | ~12MB | ✅ |
| 改 hosts | ✅ | ✅ | 部分 | — | ✅ 但 IP 失效即瘫 |
| gh-proxy 网页镜像 | — | 靠第三方 | ✗ | — | — |
| Watt Toolkit | ✅ | ✅ | 部分 | 较高 | ✅(多站点) |
| 通用代理/VPN | 视工具 | ✗(需节点) | ✅ | 视工具 | ✗ 全部流量 |
- 双击
gitport-github.exe(或.\gitport-github.exe -tray驻留托盘) - 首次启动在 exe 同目录生成:
ca.crt/ca.key(MITM 证书)、plans.json(IP 表)、settings.json(开关) - 浏览器直接用;或开「GitHub 分流接管」开关(写系统 PAC,免插件)
不开 MITM 也能用(纯透传加速);开了 MITM 解锁内容域直连与流式直通,证书根由 WebUI 一键 certutil 安装。 系统代理接管在退出/关机时自动还原;崩溃强杀后的残留由下次启动自愈。
- 隐私边界清晰 —— 直连腿本机直达 GitHub 官方边缘,不经任何第三方;镜像链剥凭据;不开 MITM 时纯透传,代理看不到内容
- 后台常驻 12MB —— 关窗到托盘后整个 WebView2 释放,托盘态占用 ≈ headless
- 全场景覆盖 —— 网页 / clone / push / Release / raw / 头像 / WebSocket
- 故障自愈 —— 换 IP / 换 SNI 形态 / 换镜像 / 系统 DNS 兜底腿,GitHub 迁边缘 IP 也能自愈
- 零服务器零账号 —— 双击即用,卸载就是删文件夹
- 不依赖 DNS —— 内置 IP 表,污染免疫
- 只碰 GitHub 流量 —— 不改其他软件的代理设置,退出自动还原
| 做不到 | 原因 | 应对 |
|---|---|---|
| 支持 macOS / Linux | 桌面框架是 Windows 专属 | macOS 用户推荐 Watt Toolkit / Clash Verge |
| 大文件上传快 | 伪装 SNI 链路上行带宽物理受限(实测 ~115KB/s 级) | 流式直通保证不 502 不堆积;中断后 git 整体重传 |
| 一劳永逸 | GitHub 边缘 IP 会迁移 | 种子补缺 + 系统 DNS 兜底腿自动自愈,极端情况手改 plans.json |
| 完全无门槛 | 开 MITM 需装本地根证书 | WebUI 一键 certutil 安装;不装也能用(纯透传) |
| 加速所有网站 | 只路由 GitHub 系域名 | Google / YouTube 等请用通用代理 |
| 私库 release 附件走镜像 | 镜像链剥凭据(防 Cookie 外泄,设计如此) | 公库无感;私库附件等直连恢复 |
| 上传路径按"本名"验收 TLS | uploads.github.com 伪装 SNI 时按其 CNAME 本名 alambic-origin.githubusercontent.com 验收(源站对未知 SNI 只吐默认证书,按所访名验收必败) |
两名同为 GitHub 控制,公信 CA 获取难度同级;仅此一处容忍,其余 host 一律按所访名验收(dial.rs verify_name) |
git push 大包很慢怎么办?
伪装 SNI 链路的上行带宽有限(实测 ~115KB/s 级),与代理机制无关。流式直通已保证不 502 不堆积; 中断后重试即整体重传。详见「工作原理 → 大请求体与 git push」。
raw 文件偶发 6~8 秒才打开?
raw 的真名 SNI 被点名 RST,连败几个候补才拨通。内容域直连熔断(120s)+ 镜像兜底已就位, 之后自动走镜像,无需干预。
浏览器报证书风险?
MITM 开着但本地根证书未装/浏览器未重启。WebUI 开关自动 certutil 装根;装完重启浏览器一次。 不想要 MITM 就在 WebUI 关掉,退回纯透传。
和别的代理/工具端口冲突?
默认占 7810(代理)+ 7811(WebUI)。用 .\gitport-github.exe -port 7812 -webui 7813 换端口即可。
页面显示「暂时不可用」每 8 秒刷新?
真处于封锁窗口期(直连与镜像同时被波及),代理正在按表自动重试。窗口一过自动恢复,本页会自动刷新。
为什么 macOS 不支持?
桌面框架(tao/wry/托盘/tray-icon)按 Windows 实现(WebView2、certutil 装根、注册表 PAC)。 跨平台在 Roadmap,目前 macOS 用户推荐 Watt Toolkit。
flowchart LR
B["浏览器 / git / 命令行"] -->|"PAC: 只有 GitHub 系域名走代理"| P["本机代理 127.0.0.1:7810"]
B -->|"其余网站"| NET["直连互联网, 与本程序无关"]
P -.管理页面.-> W["WebUI 127.0.0.1:7811<br/>状态/日志/开关/镜像校准"]
P --> D{"分流: host 是池内域名<br/>且 MITM 开着?"}
D -->|"是"| M["MITM 本地终结 TLS<br/>用本地 CA 现签证书, 解出明文"]
D -->|"否"| T["CONNECT 纯透传<br/>串发裸 TCP 或系统 DNS, 双向搬字节"]
M --> U1["直连串发腿<br/>boring 伪装SNI → GitHub 真实 IP"]
M --> U2["镜像串行链<br/>gh-proxy 系前缀代理"]
M --> U3["系统 DNS 直连"]
T --> U3
U1 --> G["GitHub 边缘<br/>140.82.x / 20.x / 185.199.x"]
U2 --> GH["镜像站"]
U3 --> ANY["任意站点"]
flowchart TD
A["浏览器请求"] --> B{"池内域名 且 MITM 开?"}
B -->|"否"| Z1["CONNECT 透传: 裸 TCP 串发或系统 DNS<br/>8s 首字节看门狗, 结束后按流量记账置顶/垫底"]
B -->|"是"| C["本地终结 TLS, 拿到明文请求"]
C --> D{"路径判定"}
D -->|"git push 等智能协议 POST<br/>或声明体积超 1MB 的请求"| S["流式直通: 请求体不进内存<br/>边收边泵给上游(h2 背压分片)<br/>响应头一到立即交付, 不再 502"]
D -->|"大文件域: codeload / objects / release-assets"| E["镜像 only: 按链逐个试<br/>全灭 = 熔断 60s + 502, 不回落直连"]
D -->|"github.com 的 /archive 或 /releases/download"| E
D -->|"githubusercontent 内容域<br/>avatars / raw / gist / camo"| F{"直连熔断中? 120s 内"}
F -->|"是"| E2["直接走镜像链, 不烧直连"]
F -->|"否"| G["直连串发<br/>.133 真名SNI, 其余伪装<br/>一圈全灭 → 熔断120s + 回落镜像链"]
D -->|"主站 / api / auth 主机"| H["直连串发 + gh_defuse<br/>拦截页垫底换IP, 试到全表"]
D -->|"objects-origin.* 上传域"| Z2["例外: 纯透传, 不过 MITM 不过镜像<br/>(经镜像会弄坏上传)"]
E --> R["写回浏览器: 剥 hop-by-hop 头<br/>注入 X-GitPort-Route / X-GitPort-Upstream 诊断头"]
E2 --> R
G --> R
S --> R
H -->|"池表+镜像全灭"| Z3["末路兜底(仅 GET/HEAD):<br/>按系统 DNS 解析的当前 IP 真名直拨<br/>—— GitHub 迁边缘 IP 时自愈"]
H --> R
Z3 --> R
R --> X["彻底失败且是 GET 导航 →<br/>502 提示页, 每 8s 自动刷新"]
每个请求的拨号都走下面这个循环。成功必须由数据层认证——握手通不算成功,拿到真实数据才算;失败则分层记账:
flowchart TD
S["需要拨号 host=github.com"] --> T{"该池冷却中?<br/>(全灭后 30s)"}
T -->|"是"| TERR["快速失败: 冷却剩余约 Ns"]
T -->|"否"| U["取表快照, 从表头开始"]
U --> V{"还有没试过的对口条目?<br/>(不对口直接跳过, 不试也不垫底)"}
V -->|"否, tried=0"| W["无对口候选, 快速失败"]
V -->|"否, 试过一圈"| W1["绕表全灭: 内容域不冷却<br/>其他池冷却 30s"]
V -->|"是"| X["TCP 连 ip:443, 预算 3s"]
X -->|"超时/拒绝"| Y["【拨号失败】该条目沉表尾<br/>试下一条"]
X -->|"通"| Z["TLS 握手: boring 伪装SNI<br/>GREASE + ALPN, 必须协商出 h2, 预算 3s"]
Z -->|"失败/被RST"| Y
Z -->|"成功"| AA["发完整 HTTP 请求, 总预算 8s"]
AA -->|"预算超时 或 零回包"| AB["【noreply】IP 垫底<br/>仅 GET/HEAD 记账; POST 不重发直接报错"]
AA -->|"拿到真实数据"| AC["【ok】该 IP 整体置顶<br/>+ 入连接缓存: 同 host 下次复用 h2 免握手"]
AA -->|"403 restricted / 400 Whoa 拦截页"| AE["【block】IP 垫底<br/>+ 清该 host 连接缓存防乒乓<br/>gh_defuse 换 IP 重试到全表"]
Y --> V
AB --> V
AE --> V
AC --> DONE["返回响应"]
轮换规则速查表(serial_move 的全部行为):
| 触发事件 | 判定层 | 动作 | 写盘与日志 |
|---|---|---|---|
| 拨号成功且拿到数据 | 数据层 ok | 该 IP 整体置顶(组内相对序不变) | 顺序真变更才置 dirty,2s 内原子写盘(tmp+rename);表头变了打一行轮换日志 |
| TCP 连不上 / TLS 握手失败 | 拨号层 | 该单条沉表尾 | 同上 |
| 握手通但零回包 / 预算超时 | 数据层 noreply | IP 垫底(仅 GET/HEAD 记账,POST 失败不污表) | 同上 |
| 拦截页 403/400 | 数据层 block | IP 垫底 + 清该 host 的连接复用槽(防"垫底→复用→再垫底"乒乓) | 同上 |
| 同 IP 重复置顶(顺序没变) | — | no-op:不写盘、不打日志 | 否 |
| 请求预算到期(用户等不及) | ctx 取消 | 只掐正在试的那条,不垫底、不冷却 | 否 |
| 绕表全灭,内容域 | — | 不冷却(镜像链兜底),直连熔断 120s | 打一行日志 |
| 绕表全灭,其他池 | — | 冷却 30s 快速失败 | 打一行日志 |
对口规则(entry_serves,防止不同类请求互相污染池序):
| host 类型 | 只认哪类条目 | SNI 形态 |
|---|---|---|
*.githubusercontent.com 内容域 |
Fastly 末段 .133 | 真名(伪装会被该边缘挂起) |
*.githubassets.com 静态资源 |
Fastly 末段 .154 / .215 | 伪装(抗 SNI 阻断) |
github.io / *.github.io |
Fastly 末段 .153 | 伪装 |
| 主站 / api / auth 主机 | 非 Fastly 段 | 伪装 baidu.com |
不对口的条目跳过不试也不垫底——否则每类请求都会把另一类的 IP 试败沉底,排序永远乒乓。
每 host 一个单槽缓存:完整成功过一次的链路(host→IP→h2 连接)才入槽。命中 = 零拨号零握手直接发请求; 失败 = 清槽重走串发。池序演化不主动切连接——缓存的连接活着就一直用,死了才换。
并发冷启动(一波页面几十个请求同时未命中缓存)走拨号单飞:只放一个进串发拨号,其余在 host 锁上排队; 首拨成功入槽后,排队者立即放锁、锁外并发复用(拨号锁只罩拨号等待,不罩请求发送——持锁到发送 会把单页 129 个并发资源压成逐个 RTT 串行,实测曾致首屏绘制 34 秒)。
上游请求的 accept-encoding 仅对 github.com / api.github.com 剥除(gh_defuse 拦截页嗅探要读
明文 HTML 头 4KB),其余域名一律放行浏览器原生 br/gzip——GitHub 页面的 HTML/CSS/JS 全程压缩传输
(实测单页资源裸传 3.7MB → 压缩后约 550KB),配合上游 h2 流控窗口(流 1MB / 连接 4MB)与并发复用,
这是"进仓库快"的完整链路。
镜像链覆盖 9 个 host:8 个内容域(raw / gist / avatars / user-images / codeload / objects / release-assets / media)
加 github.com(专供 /archive 与 /releases/download 路径)。
CSS/JS 与 github.io 不过镜像(实测全 404),归 edge 直连池。
flowchart TD
A["需要镜像取回"] --> B["读该 host 的链<br/>= plans.json 的 mirrors 板块"]
B --> C{"链空?"}
C -->|"是"| ERR["报错 → 502"]
C -->|"否"| D["取链位 i 的镜像"]
D --> E["拼 URL: 镜像域名 + / + 原始完整URL<br/>剥 Cookie / Authorization / Referer<br/>(凭据不外泄镜像)"]
E --> F{"8s 内出响应头?"}
F -->|"否"| H["记失败, i+1"]
F -->|"是"| G{"状态 >= 300<br/>或返回 html?"}
G -->|"是 (甩锅/假站/拒绝)"| H
G -->|"否"| OK["成功: 响应体不限时"]
H --> I{"链用完?"}
I -->|"否"| D
I -->|"是"| BRK["镜像熔断 60s: 期间同域请求<br/>毫秒级快速失败(不再逐家烧链)<br/>成功取回或到期即恢复"]
BRK --> ERR
链序从哪来:内置默认序(8 host × 11 镜像实测 TTFB 排好)→ UI「校准」按钮半自动重排 → 手改 plans.json。
校准 = 对每条链串行实测 TTFB(host 之间并行,链内严格串行,全程约 30~90 秒),按成绩升序重排,
失败条目按原相对序排尾,写回并返回人读报告。新镜像上线自动补到各链尾部。
多图仓库(README 塞 20+ 张图的)撞上直连+镜像双全灭窗口时,每张图原本都要串行烧完 11 家镜像才认输, 页面转圈几分钟;镜像熔断后第 2 张起毫秒级快速失败,窗口一过自动恢复。
对请求体一刀切缓冲且有上限会让 git push 的大 pack 必挂,因此按下面规则转流式直通: 请求体不进内存,边收边泵给上游(h2 按对端授予的发送窗口分片,单次发送严禁超窗口), GB 级也不堆积(实测 28MB 泵送期间代理常驻内存仅 +3MB)。
| 请求形态 | 走法 |
|---|---|
POST …/git-receive-pack(push)/ POST …/git-upload-pack(fetch 协商) |
必流式(无论大小) |
声明 content-length > 1MB 的其他请求(PUT 上传等) |
必流式 |
| 声明未超限、实际读着读着超了 | 缓冲转流式:已读的 ≤1MB 前缀作为首块续泵,不丢请求 |
| GET / HEAD / 常规小体 | 原有缓冲路径(可重放重试),行为不变 |
关键语义:
- 响应头一到立即交付客户端——上游可能收到一半就拒绝(如 413),客户端必须拿到 GitHub 的真实响应而不是代理的 502
- 截断保护:客户端上传中途断开,泵弃流不补 EOS——git pack 尾部带校验和,截断包必须被服务端拒绝,绝不能被当完整包处理
- 单次尝试:与既有"非简单方法不重发"一致;连接失效且体未动时允许换新拨重试一次,泵启动后不重试(git 客户端自身会重试)
- 流式响应头预算 1800 秒(git push 大包时服务端收完包并解包校验才应答)
| 名词 | 大白话 |
|---|---|
| 域名 / IP 地址 | 域名是"名字",IP 是"门牌号"。github.com 是名字,140.82.112.3 是门牌 |
| DNS | 查号台:把名字翻译成门牌。查号台可被投毒(给你假门牌)——本程序根本不问它,内置了一张 GitHub 真门牌表(plans.json) |
| TCP 连接 | 电话拨通。拨不通 = 这个 IP 当下不可用 |
| TLS 握手 / HTTPS | 电话接通后先对暗号、换加密频道,之后通话内容外人听不懂 |
| SNI | 握手第一句里明文写的"我要找 xx 域名"。审查就盯着这一句看 |
| ALPN / h2 | 对暗号时顺便约定讲哪种方言(HTTP/2 还是老的 1.1)。GitHub 边缘要求必须协商出 h2 |
| RST | 掐断电话:连接被中途强制挂断 |
| 黑洞 | 石沉大海:包发出去永远没有回音 |
| CONNECT 隧道 | 浏览器对 HTTPS 站点用的方式:代理只负责"接通电话然后搬运加密箱",箱里是什么看不见 |
| MITM(中间人) | 代理持有本地钥匙,把箱子拆开看明文、必要时换条路重发,再重新装箱给浏览器。需要浏览器信任代理自办的"工作证"(CA 证书) |
| CA 证书 | 自办工作证。ca.crt 装进系统"受信任的根"后,浏览器才认代理现签的证书 |
| 指纹(JA3) | TLS 握手第一句的"笔迹"——套件顺序、扩展排列。笔迹像个脚本库会被认出来;本程序用 boring(BoringSSL = Chrome 自己在用的 TLS 库),笔迹天然是 Chrome 同款,不是仿的 |
| 封锁 | 原理 | 本程序的绕法 |
|---|---|---|
| DNS 污染 | 查号台给假门牌 | 不查号,内置真 IP 表 |
| SNI 阻断 | 盯握手第一句的明文域名,看到 github 就掐 | 伪装 SNI:第一句写 baidu.com,证书却按真域名验证(SNI 与校验名解耦)。例外:185.199.x.133 这个边缘伪装会被挂起,只能真名 |
| IP 黑洞 | 门牌本身被断路 | 串发换 IP:按表逐个试,坏的垫底换下一个 |
| 风控 | 服务器认得你,故意回拦截页(403 restricted / 400 Whoa) | gh_defuse:本地认出拦截页,该 IP 垫底,换 IP 重试到全表 |
| 名词 | 大白话 |
|---|---|
| IP 池 | 某类域名的候选 IP 排队名单,存 plans.json。三个池:core(主站)/ api / edge(授权+静态+内容域) |
| 表头 | 名单第一名 = 现在正在用的 |
| 串发 | 排队逐个试,一把锁不开换下一把(对比: |
| 置顶 / 垫底 | 排队次序调整:通的升表头,坏的沉表尾 |
| 冷却 | 绕表全灭后 30 秒内快速失败,不反复烧表 |
| 熔断 | 跳闸:内容域直连失败一次,120 秒内直接走镜像,不再逐个烧 IP;镜像链全灭同理——60 秒内该域快速失败,不再逐家烧链 |
| 流式直通 | 大请求体(git push 的 pack、超 1MB 的上传)不进内存缓冲,边收边泵给上游——GB 级也不堆积,响应头一到立即回传 |
| 镜像链 | 每种资源的"复印店优先级名单"(gh-proxy 系 11 家),串行逐家用 |
| 预算 | 一次尝试最多等几秒(拨号 3s、响应 8s、镜像响应头 8s、流式响应头 1800s——git push 大包服务端收完包才应答) |
| 首字节看门狗 | 电话通了但对方 8 秒不吭声 → 判死 |
| gh_defuse | 拦截页化解机制的名字 |
.\gitport-github.exe # 默认:桌面壳 + 托盘
.\gitport-github.exe -headless # 无窗口:只跑代理 + 管理页面
.\gitport-github.exe -tray # 开机自启用:直接驻留托盘
.\gitport-github.exe -port 7812 -webui 7813 # 与其他实例共存时换端口{
"core": [
{ "ip": "140.82.112.3", "sni": "baidu.com" },
{ "ip": "20.205.243.166" }
],
"api": [ { "ip": "140.82.112.5", "sni": "baidu.com" } ],
"edge": [ { "ip": "185.199.108.133", "sni": "sni" } ],
"mirrors": {
"raw.githubusercontent.com": ["https://gh-proxy.com", "https://ghfast.top"]
}
}- 条目顺序 = 优先级,第一行是表头;
sni省略或写裸域名 = 伪装;"sni": "sni"= 真名(仅 .133 需要) - 手改重启生效;运行中的轮换 2 秒内自动写回(手改请先关代理,避免被写回覆盖)
- 表会自愈:缺池/缺新边缘 IP 时启动自动从内置种子补齐(只追加尾部,不打乱你排的顺序);池外镜像/未知 host 写了也会被剥掉
- 镜像链里只能写内置 11 家,顺序随意
条目放哪个段不影响行为——代码按 IP 末段路由(entry_serves),段只是容器。认 IP 看末段和前缀:
| 看到这种 IP | 它是谁 | 干什么活 | SNI 形态 |
|---|---|---|---|
140.82.x.3 / .4 |
主站边缘 | github.com 网页 | 伪装 |
140.82.x.5 / .6 |
API 专用边缘 | api.github.com(与网站 IP 互斥) | 伪装 |
140.82.x.29 / .30 |
授权边缘 | githubapp.com 登录/OAuth 回调 | 伪装 |
20.205.243.161 |
上传源站(alambic,单租户) | uploads.github.com(release 附件上传,与同段网页 IP 互斥) | 伪装(验收名覆盖为其 CNAME 本名) |
20.x.x.x(Azure 段)、4.237.x、172.182.x 等杂段 |
主站边缘备选 | github.com 网页 | 伪装 |
185.199.x.133 |
Fastly 内容边缘 | avatars / raw / gist / camo 等 githubusercontent 族 | 真名(伪装会被该边缘挂起) |
185.199.x.215 |
Fastly 静态边缘(新,2026-10 起 assets 已迁至此) | githubassets 的 CSS/JS | 伪装 |
185.199.x.154 |
Fastly 静态边缘(旧,2026-10 起已失联,留作兼容) | 同上 | 伪装 |
185.199.x.153 |
Fastly Pages 边缘 | github.io 站点 | 伪装 |
即:末段 .3/.4 = 网页,.5/.6 = API,.29/.30 = 授权,20.205.243.161 = 上传源站;185.199 段看末段——.133 = 头像内容,.215 = 静态(新),.154 = 静态(旧),.153 = Pages。
185.199.x.133 条目的 sni 恒为 "sni"(真名),一眼即可认出;185.199 段带伪装的就是静态/Pages 边缘。
此分工由边缘行为实测标定, plans.json 里的段位置、你手写的 sni(对 185.199 段)都改变不了它。
| 流量 | 上游路径 |
|---|---|
| github.com 及其余子域 | core 池直连串发(伪装 SNI)+ gh_defuse |
| api.github.com | api 池直连串发(API 专用边缘,与网站 IP 互斥) |
| uploads.github.com | uploads 池直连串发(专用上传源站 20.205.243.161,伪装 SNI + 按本名验收,2026-10-16 拆池——曾被 core 通配符收走致网页上传 301/403) |
| githubapp.com(授权)、githubassets、github.io | edge 池直连串发 |
| avatars/camo/gist/raw 等内容域 | edge 直连优先 → 熔断后镜像链 |
| codeload / objects / release-assets | 镜像 only |
github.com 的 /archive、/releases/download |
github.com 镜像链,串行取用,全灭 502 |
| objects-origin.* | 纯透传(上传链路,过镜像会坏) |
| 其余一切域名 | 系统 DNS 直连,不经任何表 |
- 概览:运行状态、代理地址、连通徽标、最近日志
- IP 池:三池条目一览(顺序即优先级,表头即正在用);uploads 上传源站池由内部管理,不在 UI 呈现,出问题看日志
- 设置:开机自启、关窗到托盘(✕ = 释放整个 WebView2,托盘态只剩代理核心约 12MB ≈ headless;点托盘图标随时重开工作台)、GitHub 分流接管(PAC)、MITM 开关(自动 certutil 装根,装完重启浏览器一次)
- 镜像链校准:约 30~90 秒,期间可正常上网
cargo build --release # 产物 target\release\gitport-github.exe(连同 assets\icon.ico 即为 dist)
cargo test # TLS 握手探针、迁移归一、轮换 no-op 等行为契约- 多站点加速(HuggingFace 等):拨号引擎、串发表、镜像链均为数据驱动,扩服务 = 加数据不改代码;自建 worker 反代通道已预留设计
- 本工具仅供学习网络原理与个人自用提速,请遵守所在地区法律法规,使用产生的一切后果由使用者自行承担
- 本项目与 GitHub 无任何隶属或合作关系
- 镜像链依赖的第三方公共镜像与本项目无关,可用性随它们变化