{"id":24433303,"url":"https://github.com/rosriv30/safe-url","last_synced_at":"2026-07-05T13:31:49.283Z","repository":{"id":140774852,"uuid":"389783341","full_name":"RoSriv30/safe-URL","owner":"RoSriv30","description":"Classifying URLs as safe, unsafe, or invalid based on 30 features","archived":false,"fork":false,"pushed_at":"2025-01-06T17:41:21.000Z","size":26600,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-30T15:48:11.469Z","etag":null,"topics":["security","url","webscraping"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RoSriv30.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-07-26T22:23:56.000Z","updated_at":"2025-01-06T17:41:24.000Z","dependencies_parsed_at":"2023-03-12T16:45:16.621Z","dependency_job_id":null,"html_url":"https://github.com/RoSriv30/safe-URL","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RoSriv30/safe-URL","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoSriv30%2Fsafe-URL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoSriv30%2Fsafe-URL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoSriv30%2Fsafe-URL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoSriv30%2Fsafe-URL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RoSriv30","download_url":"https://codeload.github.com/RoSriv30/safe-URL/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoSriv30%2Fsafe-URL/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35156494,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-05T02:00:06.290Z","response_time":100,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["security","url","webscraping"],"created_at":"2025-01-20T16:34:21.020Z","updated_at":"2026-07-05T13:31:49.246Z","avatar_url":"https://github.com/RoSriv30.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Welcome to Safe URL\n![Python](https://img.shields.io/badge/Python-FFD43B?style=for-the-badge\u0026logo=python\u0026logoColor=blue)\n![Pandas](https://img.shields.io/badge/Pandas-2C2D72?style=for-the-badge\u0026logo=pandas\u0026logoColor=white)\n![BeautifulSoup](https://img.shields.io/badge/BeautifulSoup-white)\n\nSafe URL is a flask web app that utilizes machine learning to check whether a URL is safe, unsafe, or non-existent. It uses a model trained on the UCI Phishing Dataset (https://archive.ics.uci.edu/ml/datasets/phishing+websites) along with the Random Forest Classifier algorithm to essentially predict the status of a URL.  This app includes a feature extractor which breaks an input URL into 30 distinct features for the model to analyze. \nThe general feature categories include \n\n - Address Bar Features\n - HTML/JS Features\n - Domain Features\n - Abnormalities\n \n \n\nEach feature translates to either a 1 for safe, 0 for suspicious, or -1 for unsafe. The combination of each of these numeric values across the various features yields the overall URL status.\n\n## Files\n\n - **app.py**: Default page of the app; handles routing\n - **featureExtraction.py**: Handles logic to extract all features and return a list containing the numeric equivalent of each feature\n -   **prediction.py**: Includes model training using Random Forest Classifier\n - **phishing.csv**: UCI Phishing Dataset\n \n -   **templates/index.html**: HTML page template\n -   **static/style.css**: Styling of HTML page\n\n\n \n   \n   \n\n\n \n\n## Key Libraries\n\n - pandas\n - BeautifulSoup4\n - scikit-learn\n - googlesearch-python\n - urllib3\n - regex\n - python-whois\n\n## Getting Started\nInstall all of the dependencies. For any libraries not installed, install manually. \n```sh\n  pip install requirements.txt\n  ```\n\nRun app.py to bring up the webpage on localhost.\n```sh\n  python app.py\n  ```\n## Demo\nBefore Check\n![Image of Safe URL](https://github.com/RoSriv30/safe-URL/blob/main/safeurl1.JPG)\n\nAfter Check\n![Image of Safe URL2](https://github.com/RoSriv30/safe-URL/blob/main/safeurl2.JPG)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frosriv30%2Fsafe-url","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frosriv30%2Fsafe-url","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frosriv30%2Fsafe-url/lists"}