Spaces:
Runtime error
Runtime error
File size: 1,170 Bytes
92f63a9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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)}) |