黄金主源 403 与备用源验证(2026-10-02)
最近一条:
黄金主源 403 与备用源验证(2026-10-02)
主题:LBMA 黄金定盘主源
prices.lbma.org.uk被 Cloudflare 拦截(连续 3 日),以及经口径验证的备用源 World Gold Council(WGC)通道回填。
口径唯一来源:框架/数据口径定义(本文不改动该文件)。
一、故障时间线(事实)
| 时间(CST) | 事件 |
|---|---|
| 2026-09-30 07:14 | LBMA gold_pm.json 正常返回(n=14692 → 14693,末条 09-29)。最后一次成功抓取。 |
| 2026-10-01 21:23 | 抓取 403(Cloudflare「Attention Required」页,4547 字节,cf-ray 可见)→ publish=FAIL。 |
| 2026-10-01 23:30 / 2026-10-02 00:21 / 01:22 | 连续复测均 403。 |
| 2026-10-02 09:01 | 403(连续第 3 日)。 |
| 2026-10-02 12:12 | 403(连续第 4 次探测失败)。 |
| 2026-10-02 12:36 | 经 WGC 备用通道回填 09-30 / 10-01,管线重跑成功(publish=PASS,target=2026-10-01)。 |
二、根因定性(监工完成,本库复核)
- 根因 =
prices.lbma.org.uk子域被 Cloudflare 拦(403 / 4547B),不是本机 IP 被封。 - 反证:
cf trace返回 200;www.lbma.org.uk返回 200;真 WebKit(内置浏览器)通道同样过不去。 - 前端 JS 调用的就是同一被拦接口 ⇒ 站内无旁路。
- FRED 对应的 LBMA 系列已 404(无替代官方源)。
- 探针留痕:
数据/logs/lbma_probe.log(JSONL)记录http / bytes / cf_ray。
最近一条:{"ts":"2026-10-02T12:40:57+08:00","http":"403","bytes":4547,"cf_ray":"a441087eab35758a-SEA","consec_fail":1,"next_interval_h":6}。
三、备用源:World Gold Council(LBMA 授权转发)
- 接口:
https://fsapi.gold.org/api/goldprice/v13/chart/main - 提供序列:
lbma_am_usd/gbp/eur、lbma_pm_usd/gbp/eur(LBMA 定盘价口径,2023-10 起)、以及 SGE/LME/MCX 等(本库不使用)。 - 口径验证方法(重叠期逐位比对):
- 取 WGC 全序列(am 382 日 / pm 379 日,均为 2023-10-02 起);
- 与本地
数据/gold_{am,pm}.json按日期逐位比较(US$ / £ / € 三列,浮点精确相等); - 硬断言:任一不一致即失败退出、拒绝写盘。
验证结果(原始输出摘要)
[am] 本地 n=14845 末条=2026-09-29 | 重叠期 380 日 | 逐位不一致 0 日 | 拟新增 2 日
[am] 重叠范围 2023-10-02 → 2026-09-28
[pm] 本地 n=14693 末条=2026-09-29 | 重叠期 377 日 | 逐位不一致 0 日 | 拟新增 2 日
[pm] 重叠范围 2023-10-02 → 2026-09-28⇒ 重叠期逐位一致(am 380/380、pm 377/377,差异 0)。
第二源确认(内置浏览器,2026-10-02)
页面 https://www.lbma.org.uk/prices-and-data/lbma-precious-metal-prices(WebKit 渲染):
AM $4,159.85(01/10)、PM $4,151.65(01/10)- 与 WGC
lbma_am_usd 2026-10-01 = 4159.85、lbma_pm_usd 2026-10-01 = 4151.65一致 ⇒ 允许 apply。
四、回填记录(只追加、不覆盖)
| 文件 | 条数 前→后 | 新增条目 | sha256 前 → 后 | 备份 |
|---|---|---|---|---|
数据/gold_am.json | 14845 → 14847 | 09-30 [4188.75, 3155.80, 3687.78];10-01 [4159.85, 3146.09, 3683.13] | 475db673… → 33179af5… | gold_am.json.bak_20261002 |
数据/gold_pm.json | 14693 → 14695 | 09-30 [4176.30, 3144.34, 3677.23];10-01 [4151.65, 3139.48, 3677.95] | dc25ccb6… → ebdf0fa3… | gold_pm.json.bak_20261002 |
- 脚本:
scripts/backfill_gold_from_wgc.py(默认--dry-run,--apply才写)。 - 交叉验证记录:
数据/gold_wgc_xcheck.json(result=APPLIED,asOfDate=2026-10-01)。 - 回滚点:
/var/minis/shared/backup/DUCKERRY_pre_gold_backfill_20261002/(含两文件 +MD5_BEFORE.txt)。 - 写后管线:
run_id 20261002T124148+0800,target=2026-10-01、G1=PASS、publish=PASS、fetch_failures=[]。
五、防复发机制(P2,并未改动信号/风控逻辑)
- 生产链交叉源回退(
scripts/dkfetch.py):LBMA 主源不可达时自动拉 WGC,写数据/gold_xcheck.json;
默认不写主文件;主文件回填须显式 DK_GOLD_BACKFILL=1(对齐 DK_SKIP_* 惯例)。 回退仅在重叠期逐位一致且本地已覆盖 WGC 最新定盘日时才将黄金源判为「可用」;任何异常永不阻断发布。
- 指数退避探针(
scripts/lbma_probe.py):记录http / bytes / cf-ray,间隔 3h → 6h → 12h → 24h(成功后复位);
结果写 数据/logs/lbma_probe.log。停止每 3 小时无脑重试。
六、限制与红线
- ⛔ WGC 不可当主源:仅 2023-10 起、仅作回填/交叉核验用途;不作日常主通道。
- ⛔ 任何替代源在口径验证通过前不得写
数据/gold_*.json。 - ⛔ 不得用现货/期货价冒充 LBMA 定盘价;不得外推;不得覆盖已有日期。
- ⚠ 单家二级源集中度风险(WGC)
[待验证]。 - ⚠ 本库未改动
框架/数据口径定义.md(红线)。 - 仓位 / 信号 / 止损逻辑一律未动。
七、相关产物
- 复盘/2026-10/2026-10-01 收盘复盘(正常复盘,含 WGC 回填说明)
- 复盘/2026-09/2026-09-30 收盘复盘(回填补记)
scripts/backfill_gold_from_wgc.py、scripts/lbma_probe.py、数据/gold_wgc_xcheck.json、数据/logs/lbma_probe.log