import joblib import csv import sys from pathlib import Path import numpy as np from scipy.sparse import hstack from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics import accuracy_score, classification_report, confusion_matrix from sklearn.model_selection import train_test_split from sklearn.svm import LinearSVC sys.path.append(str(Path(__file__).resolve().parent.parent)) from common.features import handcrafted_feature_matrix # noqa: E402 XSS_KEYWORDS = [ "alert(document.cookie)", "search term: comfortable running shoes", "", "notes: please call before 5pm", ] Xd_tfidf = vectorizer.transform(samples) Xd_hand = handcrafted_feature_matrix(samples, XSS_KEYWORDS) Xd = hstack([Xd_tfidf, Xd_hand]) preds = clf.predict(Xd) for text, label in zip(samples, preds): verdict = "MALICIOUS" if label == 1 else "benign" print(f"[{verdict}] {text}") if __name__ == "__main__": joblib.dump(vectorizer, "xss_vectorizer.joblib") joblib.dump(clf, "xss_classifier.joblib") print("\nSaved model artifacts. Run: python test_model.py") main()