#!/usr/bin/env python3
"""Bedah lanjutan halaman DAS: apakah isi artikel muncul, ada skrip asing, dan aman atau tidak."""
import re, urllib.error, urllib.request

URL = "https://dasindonesia.com/merawat-sistem-pendingin-mesin-radiator-cairan/"
UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/124.0 Safari/537.36"}
t = urllib.request.urlopen(urllib.request.Request(URL, headers=UA), timeout=60).read().decode("utf-8", "replace")

print(f"panjang HTML: {len(t)}")
teks = re.sub(r"<script.*?</script>|<style.*?</style>", " ", t, flags=re.S)
teks = re.sub(r"\s+", " ", re.sub(r"<[^>]+>", " ", teks))
print(f"teks terlihat: {len(teks)} char · {len(teks.split())} kata")

print("\n=== apakah isi artikel muncul di halaman? ===")
for frasa in ("radiator", "cairan pendingin", "sistem pendingin", "tanda bahaya", "overheat"):
    n = len(re.findall(frasa, teks, re.I))
    print(f"   «{frasa}»: {n}")

print("\n=== skrip sebaris (inline) yang bisa mengalihkan ===")
for m in re.findall(r"<script(?![^>]*src)[^>]*>(.*?)</script>", t, re.S):
    isi = re.sub(r"\s+", " ", m).strip()
    if "location" in isi or "eval(" in isi or "atob(" in isi or "fromCharCode" in isi:
        print("   ⚠", isi[:220])

print("\n=== domain luar yang dirujuk halaman ===")
luar = set(re.findall(r'(?:src|href)="(?:https?:)?//([a-z0-9.-]+\.[a-z]{2,})', t, re.I))
boleh = ("dasindonesia.com", "google", "gstatic", "gmpg.org", "schema.org", "w.org", "gravatar",
         "wp.com", "youtube", "facebook", "instagram", "wa.me", "whatsapp", "googletagmanager",
         "google-analytics", "cloudflare", "jsdelivr", "bootstrapcdn", "fonts.")
mencurigakan = sorted(d for d in luar if not any(b in d for b in boleh))
print(f"   total domain: {len(luar)} · di luar daftar wajar: {len(mencurigakan)}")
for d in mencurigakan[:15]:
    print("   ⚠", d)

print("\n=== tautan keluar di isi artikel ===")
for m in sorted(set(re.findall(r'href="(https?://(?!dasindonesia\.com|wa\.me|api\.whatsapp|www\.google|goo\.gl|maps\.)[^"]+)"', t, re.I)))[:12]:
    print("   ", m[:100])
