Files
explorer-monorepo/scripts/check-explorer-health.sh
2026-03-27 14:12:14 -07:00

96 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
BASE_URL="${1:-https://explorer.d-bis.org}"
python3 - "$BASE_URL" <<'PY'
import re
import sys
import requests
base = sys.argv[1].rstrip("/")
session = requests.Session()
session.headers.update({"User-Agent": "ExplorerHealthCheck/1.0"})
checks = [
"/",
"/home",
"/blocks",
"/transactions",
"/addresses",
"/bridge",
"/weth",
"/tokens",
"/pools",
"/watchlist",
"/more",
"/analytics",
"/operator",
"/liquidity",
"/snap/",
"/docs.html",
"/privacy.html",
"/terms.html",
"/acknowledgments.html",
"/api/v2/stats",
"/api/config/token-list",
"/api/config/networks",
"/explorer-api/v1/features",
"/explorer-api/v1/ai/context?q=cUSDT",
"/token-aggregation/api/v1/routes/tree?chainId=138&tokenIn=0x93E66202A11B1772E55407B32B44e5Cd8eda7f22&tokenOut=0x004b63A7B5b0E06f6bB6adb4a5F9f590BF3182D1&amountIn=1000000",
"/token-aggregation/api/v1/routes/matrix",
"/token-aggregation/api/v1/routes/ingestion?fromChainId=138&routeType=swap",
"/token-aggregation/api/v1/routes/partner-payloads?partner=0x&amount=1000000&includeUnsupported=true",
]
failed = False
print("== Core routes ==")
for path in checks:
url = base + path
try:
resp = session.get(url, timeout=20, allow_redirects=True)
ctype = resp.headers.get("content-type", "")
print(f"{resp.status_code:>3} {path} [{ctype[:50]}]")
if resp.status_code >= 400:
failed = True
except Exception as exc:
failed = True
print(f"ERR {path} [{exc}]")
print("\n== Internal href targets from homepage ==")
try:
home = session.get(base + "/", timeout=20).text
hrefs = sorted(set(re.findall(r'href="([^"]+)"', home)))
for href in hrefs:
if href.startswith("/") and not href.startswith("//"):
resp = session.get(base + href, timeout=20, allow_redirects=True)
print(f"{resp.status_code:>3} {href}")
if resp.status_code >= 400:
failed = True
except Exception as exc:
failed = True
print(f"ERR homepage href sweep failed: {exc}")
print("\n== Static explorer domains referenced by bridge page ==")
external_roots = [
"https://etherscan.io/",
"https://bscscan.com/",
"https://polygonscan.com/",
"https://subnets.avax.network/c-chain",
"https://basescan.org/",
"https://arbiscan.io/",
"https://optimistic.etherscan.io/",
]
for url in external_roots:
try:
resp = session.get(url, timeout=20, allow_redirects=True)
print(f"{resp.status_code:>3} {url}")
except Exception as exc:
print(f"ERR {url} [{exc}]")
if failed:
sys.exit(1)
PY