Download app.py from Stormx101/malicious-url-detector-by-Rohan: direct link, hf CLI and curl.
- Browser
- Download file 1.91 kB
-
https://huggingface.co/spaces/Stormx101/malicious-url-detector-by-Rohan/resolve/main/app.py
- Command line
-
hf download hf://spaces/Stormx101/malicious-url-detector-by-Rohan/app.py
-
curl -L -o app.py https://huggingface.co/spaces/Stormx101/malicious-url-detector-by-Rohan/resolve/main/app.py
1.91 kB
| import gradio as gr | |
| import joblib | |
| import pandas as pd | |
| import re | |
| import os | |
| # Download model from GitHub or use local | |
| # For Hugging Face, you'll upload the model file | |
| def extract_features(url): | |
| features = { | |
| 'url_length': len(url), | |
| 'num_dots': url.count('.'), | |
| 'num_hyphens': url.count('-'), | |
| 'num_slash': url.count('/'), | |
| 'num_underscore': url.count('_'), | |
| 'num_digits': sum(c.isdigit() for c in url), | |
| 'has_https': 1 if url.startswith('https') else 0, | |
| 'has_ip': 1 if re.search(r'\d+\.\d+\.\d+\.\d+', url) else 0, | |
| 'num_suspicious': sum(1 for word in ['login','verify','secure','account','signin','auth'] | |
| if word in url.lower()), | |
| 'num_at': url.count('@'), | |
| 'num_question': url.count('?'), | |
| 'num_equal': url.count('=') | |
| } | |
| return pd.DataFrame([features]) | |
| def predict_url(url): | |
| if not url: | |
| return "⚠️ Enter a URL", "" | |
| # Load model (will be in same folder on Hugging Face) | |
| model = joblib.load('malicious_url_detector.pkl') | |
| features = extract_features(url) | |
| pred = model.predict(features)[0] | |
| prob = model.predict_proba(features)[0] | |
| if pred == 1: | |
| return f"🚨 MALICIOUS\nConfidence: {prob[1]:.1%}", "" | |
| return f"✅ SAFE\nConfidence: {prob[0]:.1%}", "" | |
| interface = gr.Interface( | |
| fn=predict_url, | |
| inputs=gr.Textbox(label="Enter URL", placeholder="https://...", lines=2), | |
| outputs=gr.Textbox(label="Result", lines=3), | |
| title="🛡️ AI Malicious URL Detector", | |
| description="This AI model detects phishing and malicious URLs in real-time.", | |
| examples=[ | |
| ["https://google.com"], | |
| ["https://paypal.com.login.verify.secure.com"], | |
| ["https://github.com"], | |
| ["http://192.168.1.1/banking/login"] | |
| ] | |
| ) | |
| interface.launch() |