把订阅节点写入本地数据库,生成 mihomo 多端口监听池,并通过 Go 网关提供:
348034823481当前支持两种代理入口:
generated/config.yaml 和 proxy.dbmihomo 配置ruby scripts/generate_mihomo_config.rb \
--subscription-url "你的订阅地址"
会生成:
generated/config.yamlgenerated/node-port-map.csvgenerated/proxy.dbcp .env.example .env
.env.example 里当前只有一项:
ADMIN_KEY=visual2010
你可以自行改成自己的后台口令。
详细部署说明请看:
docker compose up -d --build
如果是生产环境,想直接使用已构建好的镜像:
docker compose -f docker-compose.prod.yml up -d
如果是 NAS 环境,优先使用:
docker compose -f docker-compose.nas.yml up -d --build
说明:
gateway 和 mihomo 在同一个 Docker network 内通信mihomo 不对宿主机暴露端口ADMIN_KEY 控制如果只想本地联调 Go 服务:
ADMIN_KEY=visual2010 GOCACHE=/tmp/mihomo-go-build go run ./cmd/proxy-gateway
如果只联调后台,不开代理端口:
ADMIN_ONLY=true ADMIN_KEY=visual2010 GOCACHE=/tmp/mihomo-go-build go run ./cmd/proxy-gateway
3480
3482
3481
项目接口分成两类:
Public
Admin
/api/v1/admin/*完整接口说明与 curl 示例请看:
节点代理 HTTP:
curl --proxy "http://40089:x@127.0.0.1:3480" https://ipinfo.io/ip
节点代理 SOCKS5:
curl --proxy "socks5h://40089:x@127.0.0.1:3482" https://ipinfo.io/ip
分组代理 HTTP:
curl --proxy "http://45400:x@127.0.0.1:3480" https://ip.123408.xyz/info
分组代理 SOCKS5:
curl --proxy "socks5h://45400:x@127.0.0.1:3482" https://ip.123408.xyz/info
Python 示例:
import json
import urllib.request
proxy_port = 45400 # 也可以替换成公开接口返回的节点端口
proxy = f"http://{proxy_port}:x@127.0.0.1:3480"
opener = urllib.request.build_opener(
urllib.request.ProxyHandler({
"http": proxy,
"https": proxy,
})
)
req = urllib.request.Request(
"https://ip.123408.xyz/info",
headers={"User-Agent": "mihomo-proxy-demo/1.0"},
)
with opener.open(req, timeout=15) as resp:
data = json.loads(resp.read().decode("utf-8"))
print(json.dumps(data, ensure_ascii=False, indent=2))
Python requests 示例:
import requests
proxy_port = 45400 # 也可以替换成公开接口返回的节点端口
proxy = f"http://{proxy_port}:x@127.0.0.1:3480"
resp = requests.get(
"https://ip.123408.xyz/info",
proxies={
"http": proxy,
"https": proxy,
},
headers={"User-Agent": "mihomo-proxy-demo/1.0"},
timeout=15,
)
resp.raise_for_status()
print(resp.json())
说明:
3480 是 HTTP 代理入口3482 是 SOCKS5 代理入口HTTP_PROXY / HTTPS_PROXY / ALL_PROXY,测试前建议先清空随机取一个节点并访问目标站:
python3 scripts/check_google_via_random_proxy.py
可选参数:
python3 scripts/check_google_via_random_proxy.py \ --control-url http://127.0.0.1:3481 \ --gateway-host 127.0.0.1 \ --gateway-port 3480 \ --target-url https://google.com