Gargi Monga
Fix backend imports
8226d94
Raw
History Blame Contribute Delete
2.46 kB
import sys
from pathlib import Path
PROJECT_ROOT = Path(__file__).resolve().parents[3]
sys.path.insert(0, str(PROJECT_ROOT))
import json
import validators
import requests
from urllib.parse import urlparse
from ai.sarvam_client import generate_response, extract_json
SHORTENED_DOMAINS = [
"bit.ly",
"tinyurl.com",
"goo.gl",
"t.co",
"ow.ly",
"is.gd",
"buff.ly",
"rebrand.ly"
]
def analyze_url_info(url):
"""
Analyze URL locally.
"""
if not validators.url(url):
return {
"valid": False,
"domain": "",
"https": False,
"shortened": False
}
parsed = urlparse(url)
domain = parsed.netloc.lower()
shortened = any(short in domain for short in SHORTENED_DOMAINS)
https = parsed.scheme == "https"
return {
"valid": True,
"domain": domain,
"https": https,
"shortened": shortened
}
def create_url_prompt(info):
prompt = f"""
You are an expert cybersecurity analyst.
Analyze the following URL information.
Domain:
{info["domain"]}
HTTPS:
{info["https"]}
Shortened URL:
{info["shortened"]}
Determine:
1. Scam risk (0-100)
2. Phishing likelihood
3. Whether the URL appears suspicious
4. Short explanation
Return ONLY valid JSON.
{{
"risk_score":20,
"phishing":false,
"suspicious":false,
"reason":"Short explanation."
}}
"""
return prompt
def get_url_analysis(url):
info = analyze_url_info(url)
if not info["valid"]:
return {
"risk_score": 100,
"phishing": True,
"suspicious": True,
"reason": "Invalid URL."
}
prompt = create_url_prompt(info)
response = generate_response(prompt)
return parse_model_response(response)
def parse_model_response(response):
if response is None:
return {
"risk_score": 50,
"phishing": False,
"suspicious": True,
"reason": "No response received from Sarvam AI."
}
parsed = extract_json(response)
if parsed is None:
return {
"risk_score": 50,
"phishing": False,
"suspicious": True,
"reason": "Unable to analyze URL."
}
return parsed
def analyze_url(url):
return get_url_analysis(url)
if __name__ == "__main__":
sample = "https://www.google.com"
print(analyze_url(sample))