Files
gavindiaz 125470b24a sync: upstream + our customizations (dashboard, healthcheck, docs)
Synced from github/main: aebcfa2d copybot: live paper feed [skip ci]
Our additions: serve_dashboard.py, bot_dashboard.html, mihomo-healthcheck.sh,
中文文档, 我们的钱包配置
2026-07-21 07:35:48 +08:00

62 lines
2.0 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# mihomo 代理健康检查 - Polymarket 专用
# 逻辑:当前节点能下单就不换;不能下单就在日本/香港节点之间切换
# cron 每 5 分钟跑一次
API="http://127.0.0.1:9090"
PROXY="http://127.0.0.1:7890"
# 测试当前节点能否通过 Polymarket geo-gate(下单检测,不是读取检测)
# 用 POST /order 测,403=被block401=通过(到认证层了)
test_geo() {
code=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 -x $PROXY \
-X POST "https://clob.polymarket.com/order" \
-H "Content-Type: application/json" \
-d '{}' 2>/dev/null)
# 401 = 通过 geo-gate(到认证层了),403 = 被 block
if [ "$code" = "401" ] || [ "$code" = "400" ]; then
return 0 # 能下单
fi
return 1 # 不能下单
}
# 1. 测当前节点能不能下单
if test_geo; then
exit 0 # 能下单,不换
fi
# 2. 不能下单,在日本和香港节点之间找能用的
# 只选日本/香港/韩国/台湾(Polymarket 允许的地区)
nodes=$(curl -s "$API/proxies" | python3 -c "
import sys, json
d = json.load(sys.stdin)
skip = {'DIRECT','REJECT','自动选择','故障转移','良心云','GLOBAL',
'剩余流量','套餐到期'}
# 只允许的地区关键词(日本/香港最稳定)
allowed = ['日本', 'JP', 'Japan', '香港', 'HK', 'Hong Kong']
for name, info in d.get('proxies', {}).items():
if name in skip:
continue
if info.get('type') in ('Selector','URLTest','Fallback','LoadBalance'):
continue
# 只选允许地区的节点
if not any(k in name for k in allowed):
continue
print(name)
")
# 3. 逐个试,找到能下单的就切
for node in $nodes; do
curl -s -X PUT "$API/proxies/GLOBAL" \
-H "Content-Type: application/json" \
-d "{\"name\":\"$node\"}" > /dev/null
sleep 2
if test_geo; then
logger "mihomo-healthcheck: switched to $node (previous node geo-blocked)"
exit 0
fi
done
logger "mihomo-healthcheck: ALL JP/HK nodes failed - check mihomo or subscription"
exit 1