#!/usr/bin/env python3
"""Pindai semua situs klien aktif: skrip sisipan, kata judi, elemen tersembunyi, tautan asing mencurigakan."""
import re, time, urllib.error, urllib.request

UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/124.0 Safari/537.36"}
SITUS = [
    ("StudioSoft", "studiosoft.id"),
    ("DAS Bengkel", "dasindonesia.com"),
    ("TSLaw", "www.tslaw.id"),
    ("The Skin Code Clinic", "www.theskincodeclinic.com"),
    ("Yasmanatura", "yasmanatura.co.id"),
    ("Kendangsari Hospital", "rsia.kendangsari.com"),
    ("EveryBe", "www.everybeofficial.com"),
    ("Surabaya Skin Centre", "www.surabaya-skincentre.com"),
    ("DMark Creative", "dmark.id"),
    ("Abimata", "abimataconsultant.com"),
]
SUNTIKAN = re.compile(r"livedashboardkit|35862e74a4a697bb6d998c471eade297|_b4a7b|_86b24", re.I)
JUDI = re.compile(r"casino|slot gacor|togel|maxwin|judi online|situs slot|kasyno", re.I)
RAGU = re.compile(r"document\.referrer|eval\(atob|fromCharCode\(|document\.write\(unescape", re.I)
HIDDEN = re.compile(r"position:\s*absolute;\s*left:\s*-\d{3,}|overflow:\s*hidden;\s*height:\s*1(?:\.\d)?px", re.I)


def ambil(url):
    try:
        with urllib.request.urlopen(urllib.request.Request(url, headers=UA), timeout=45) as x:
            return x.read().decode("utf-8", "replace")
    except Exception as e:
        return f"GAGAL {str(e)[:30]}"


print("=== pindai situs klien (beranda + 1 artikel) ===\n")
for nama, dom in SITUS:
    t = ambil(f"https://{dom}/?x={int(time.time())}")
    if t.startswith("GAGAL"):
        print(f"   {nama:<22} {dom:<30} {t}")
        continue
    sm = ambil(f"https://{dom}/sitemap_index.xml")
    art = ""
    if not sm.startswith("GAGAL"):
        subs = [u for u in re.findall(r"<loc>([^<]+)</loc>", sm) if "post-sitemap" in u][:1]
        if subs:
            sm2 = ambil(subs[0])
            if not sm2.startswith("GAGAL"):
                kandidat = [u for u in re.findall(r"<loc>([^<]+)</loc>", sm2) if not u.endswith(".xml")]
                if kandidat:
                    art = ambil(kandidat[0])
    gab = t + art
    tanda = []
    if SUNTIKAN.search(gab):
        tanda.append("skrip livedashboardkit")
    if JUDI.search(gab):
        tanda.append("kata judi")
    if RAGU.search(gab):
        tanda.append("skrip berselubung")
    if HIDDEN.search(gab):
        tanda.append("elemen tersembunyi")
    status = " ⚠ " + ", ".join(tanda) if tanda else " ✅ bersih"
    print(f"   {nama:<22} {dom:<30} beranda {len(t):>7} char · artikel {len(art) if not art.startswith('GAGAL') else 0:>7} char{status}")
    time.sleep(0.6)
