↓
🌐 index.html — Frontend SPA
Cloudflare Pages
↓ POST /analyze-url
⚙️ Cloudflare Worker — fetch()
↓
🔒 CORS Check
*.pages.dev · localhost · env.ALLOWED_ORIGIN
⏱ Rate Limit
30 req/min · KV bucket/IP
↓ Validate URL
✅ URL Validation
format · max 2048 · no private IP
↓
🏅 Trusted Domain List
google · facebook · momo · zalopay · vietcombank…
✓ Match → SAFE ngay
✗ Không match ↓
📦 KV Cache Lookup
TTL 3600s — CACHE_STORE
Cache HIT → trả kết quả
Cache MISS ↓
🤖 Jina Reader
Scrape nội dung trang
✨ Gemini AI
gemini-2.0-flash · JSON verdict
🔍 RDAP Cloudflare
Domain age lookup
🏷️ Heuristic Scanner
Từ khóa VN bank/ewallet/cờ bạc
↓ Verdict Fusion
⚖️ fuseVerdict()
AI + domain age + heuristic → final verdict + risk score
↓
🛡️ SAFE
risk < 0.3
⚠️ SUSPICIOUS
risk 0.3–0.7
🚨 PHISHING
BANK · EWALLET · SOCIAL · GAMBLING
↓ ctx.waitUntil()
💾 Cache Result (KV)
TTL 3600s
📊 Log Counter (KV)
total_scans · threats_blocked
↓
📤 JSON Response → Frontend render