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("") |