Spaces:
Runtime error
Runtime error
import streamlit as st | |
import pickle | |
import pandas as pd | |
from extract_features import ExtractFeatures | |
def get_model(): | |
""" | |
Loads the phishing URL detection model from a pickle file. | |
This function reads and loads a pickled file containing the classifier. | |
Returns: | |
object: The loaded phishing URL detection model. | |
Note: | |
The model should be saved in a file named 'phishing_url_detector.pkl'. | |
XGBoost module must be installed before using the file. | |
""" | |
with open('phishing_url_detector.pkl', 'rb') as pickle_model: | |
phishing_url_detector = pickle.load(pickle_model) | |
return phishing_url_detector | |
st.title("Phishing Website Detector") | |
st.header("Are you sure your 'bank' sent that link?") | |
# Takes in user input | |
input_url = st.text_area("Put in your sus site link here: ") | |
if input_url != "": | |
# Extracts features from the URL and converts it into a dataframe | |
features_url = ExtractFeatures().url_to_features(url=input_url) | |
features_dataframe = pd.DataFrame.from_dict([features_url]) | |
features_dataframe = features_dataframe.fillna(-1) | |
features_dataframe = features_dataframe.astype(int) | |
st.write("Okay!") | |
st.cache_data.clear() | |
prediction_str = "" | |
# Predict outcome using extracted features | |
try: | |
phishing_url_detector = get_model() | |
prediction = phishing_url_detector.predict(features_dataframe) | |
if prediction == int(True): | |
prediction_str = 'Phishing Website. Do not click!' | |
elif prediction == int(False): | |
prediction_str = 'Not Phishing Website, stay safe!' | |
else: | |
prediction_str = '' | |
st.write(prediction_str) | |
st.write(features_dataframe) | |
except Exception as e: | |
print(e) | |
st.error("Not sure, what went wrong. We'll get back to you shortly!") | |
else: | |
st.write("") |