--- note: 2026-07-09 session - SDK vs CLI domain routing difference --- # SDK vs CLI: 域名路由差异(关键!) **问题**: Python SDK 和 CLI 走**不同的 endpoint 域名**: - **CLI** 走 `openapi.longbridge.com` (AWS HK/全球,海外域) - **Python SDK** 走 `openapi.longportapp.cn` (Aliyun 深圳/上海,国内域) **影响**: 602315 mainland CN geo-block 触发条件: - 通过 CLI 走 .com 海外域 → ✅ 不触发 602315 (走 AWS 海外 IP) - 通过 SDK 走 .cn 国内域 → ❌ 触发 602315 (无论出口 IP 是哪) **这就是为什么**: - 单次 CLI 下单能成功(RGTI 15股@15.50, 订单 `1259547163696824320`) - 同样条件下 Python SDK 调 `submit_order` 仍 602315 # is_cn() 探测机制 SDK 内置 `is_cn()` 函数判断走 `.cn` 还是 `.com`: 1. 优先读 `LONGBRIDGE_REGION` / `LONGPORT_REGION` 环境变量 - 设成 `CN` → 走 .cn (国内) - 设成 `ap` / `us` / 任何非 CN → 走 .com (海外) 2. 没设环境变量 → HTTP 探测 `https://geotest.lbkrs.com` - 返回 200 → 判定 CN → 走 .cn - 超时/非 200 → 判定非 CN → 走 .com **问题**: - 即使设 `LONGBRIDGE_REGION=ap`,SDK 仍然走 `openapi.longportapp.cn` (不知道原因,可能 SDK 没实现完整) - geotest.lbkrs.com 解析到国内 IP,即使设了 env var,探测可能仍命中 # LONGBRIDGE_HTTP_URL 环境变量 CLI 读 `LONGBRIDGE_HTTP_URL` 环境变量(SDK 似乎不读)强制覆盖: ```bash export LONGBRIDGE_HTTP_URL=https://openapi.longbridge.com ``` 实测用这个走 CLI 下单 RGTI 1股@15.40 → 成功 (订单 `1259694819492519936`)。 # 实际工作流(2026-07-09 验证) **能用的下单路径**: ```bash LONGBRIDGE_HTTP_URL=https://openapi.longbridge.com \ LONGBRIDGE_REGION=ap \ LONGBRIDGE_TRADE_ENABLED=true \ proxychains4 -f ~/.proxychains/proxychains.conf \ ~/.local/bin/longbridge --profile lb_real buy --qty N --price P -y ``` **不能用的**: - Python SDK `trade_ctx.submit_order()` (任何方式) → 持续 602315 - WireGuard (用户禁用,关不全卡死网络) # hosts 改 .cn → .com 已弃用 曾尝试用 `/etc/hosts` 把 `openapi.longportapp.cn` / `openapi.longbridge.cn` 指向 AWS 海外 IP (`18.166.191.191`),**导致**: - AWS 香港 IP 从 Clash 出口 SSL 握手失败 (`SSL_ERROR_SYSCALL`) - 即使换 HK/台湾/美国 节点全部 connect 失败 - 而且污染了系统 hosts,需要 SSH 跑 `longbridge_hosts_restore.sh` 回退 **不再推荐改 hosts**——只设 env var,让 CLI 走真 DNS 解析的 .com 域。 # auto_execution 现状 - ✅ CLI 单次手动下单:可行 - ❌ cron 跑 Python SDK 自动下单:不可行 - ⏸ 监控 cron (`us_intraday_monitor_cron.sh` / `hk_intraday_monitor_cron.sh`):已改为只读监控 + QQ 推送,等用户触发手动下单 # 相关 references - `references/longbridge-602315-bypass.md` - 完整诊断 - `references/clash-node-switching.md` - Clash API 切节点 - `references/cron-wrapper-multi-token-pitfall.md` - cron wrapper 模式