Server-Main / Version_5 /src /dom_scraper.py
atharvawarade9807's picture
Upload 10 files
92f63a9 verified
Raw
History Blame
1.17 kB
from playwright.sync_api import sync_playwright
import json
def extract_dom_features(url: str) -> str:
if not url.startswith("http"):
return json.dumps({"error": "No valid URL provided."})
try:
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
# 10-second timeout to prevent stalling on dead phishing links
page.goto(url, timeout=10000)
# Extract where login forms actually send data
forms = page.locator("form").evaluate_all(
"elements => elements.map(e => ({ action: e.action, method: e.method }))"
)
# Extract invisible tracking/token fields
hidden_inputs = page.locator("input[type='hidden']").evaluate_all(
"elements => elements.map(e => ({ name: e.name, value: e.value }))"
)
browser.close()
return json.dumps({"forms": forms, "hidden_inputs": hidden_inputs})
except Exception as e:
return json.dumps({"scraper_error": str(e)})