vault ключей + мост abuse-radar + китайские источники: всё в одном реестре
- omni/vault.py: пул ключей парсеров (env-first, data/vault.json, ротация, cooldown 401/402/403=1ч, 429=10м), только маски в выводе - tools/build_vault.py: сборка пула из MASTER_KEYS.csv и локальных дампов (значения не в git) - tools/vault_check.py: живая проверка с маскированием - searchers: firecrawl/tavily/exa/serper/jina/apify берут ключ из vault, если нет env - omni radar: домены+каналы из radar_server.db -> реестр, --import-posts заливает посты каналов - radar-источники помечены opt_in: общий обход не тормозят (869 против 3337 всего) - omni/sources_cn.py + tools/wave_cn.py: 9 живых китайских источников (52pojie, nodeseek, kanxue, anquanke, 4hou, xz.aliyun, ithome, cnbeta, v2ex) - net.get(proxy=...): принудительный прокси для CF-площадок - /api/keys + строка ключей в панели - tests/test_vault_radar.py: 7 тестов, всего 29 passed
This commit is contained in:
@@ -236,6 +236,15 @@ class Handler(BaseHTTPRequestHandler):
|
||||
items = [{"key": k, "label": taxonomy.LABELS.get(k, k), "n": v} for k, v in cnt.items()]
|
||||
return self._json({"ok": True, "types": items, "total": sum(cnt.values())})
|
||||
|
||||
if path == "/api/keys":
|
||||
from . import vault as _v
|
||||
rows = _v.stats()
|
||||
if q.get("service"):
|
||||
rows = [x for x in rows if x["service"] == q["service"][0]]
|
||||
return self._json({"ok": True, "services": rows,
|
||||
"total_keys": sum(x["keys"] for x in rows),
|
||||
"total_ready": sum(x["ready"] for x in rows)})
|
||||
|
||||
if path == "/api/runs":
|
||||
try:
|
||||
limit = _intv(q, "limit", 80, 1, 500)
|
||||
|
||||
Reference in New Issue
Block a user