{"id":31026101,"url":"https://github.com/tristanbilot/phishgnn","last_synced_at":"2025-09-13T17:58:51.774Z","repository":{"id":40588562,"uuid":"473147048","full_name":"TristanBilot/phishGNN","owner":"TristanBilot","description":"Phishing detection using GNNs (SECRYPT'22)","archived":false,"fork":false,"pushed_at":"2025-06-06T07:46:06.000Z","size":35191,"stargazers_count":14,"open_issues_count":2,"forks_count":6,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-09-09T14:12:14.249Z","etag":null,"topics":["gnn","graphs","phishing-detection","representation-learning"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TristanBilot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2022-03-23T10:54:27.000Z","updated_at":"2025-07-22T14:47:08.000Z","dependencies_parsed_at":"2024-02-22T11:35:25.945Z","dependency_job_id":null,"html_url":"https://github.com/TristanBilot/phishGNN","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TristanBilot/phishGNN","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TristanBilot%2FphishGNN","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TristanBilot%2FphishGNN/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TristanBilot%2FphishGNN/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TristanBilot%2FphishGNN/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TristanBilot","download_url":"https://codeload.github.com/TristanBilot/phishGNN/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TristanBilot%2FphishGNN/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275004504,"owners_count":25389192,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-13T02:00:10.085Z","response_time":70,"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":["gnn","graphs","phishing-detection","representation-learning"],"created_at":"2025-09-13T17:58:28.739Z","updated_at":"2025-09-13T17:58:51.754Z","avatar_url":"https://github.com/TristanBilot.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PhishGNN\n\nCode for the paper: [PhishGNN: A Phishing Website Detection Framework using Graph Neural Networks](https://hal.science/hal-04401167v1/file/PhishGNN_A_Phishing_Website_Detection_Framework_using_Graph_Neural_Networks.pdf).\n\n\u003cp float=\"left\"\u003e\n    \u003cimg width=\"35%\" alt=\"phishing_graph\" src=\"https://user-images.githubusercontent.com/40337775/165151501-0c0f37b0-c055-4085-b640-3a86e4c9a7d8.svg\"\u003e\n    \u003cimg width=\"35%\" alt=\"phishing_graph\" src=\"https://user-images.githubusercontent.com/40337775/165151748-4dca6de8-104f-4f1b-b03e-9054a1e399f4.svg\"\u003e\n\u003c/p\u003e\n    \n## Installation\n\n### Clone the repo\n\n```\ngit clone https://github.com/TristanBilot/phishGNN.git\ncd phishGNN\n```\n\n### Install dependencies\n\n```python\npython3 -m venv venv\n. venv/bin/activate\npip install wheel\npip install -r requirements.txt\npip install torch-scatter torch-sparse torch-cluster torch-spline-conv torch-geometric -f https://data.pyg.org/whl/torch-1.12.0+cpu.html # for cpu\n```\n\n### unzip the dataset\n```shell\n./install_dataset.sh\n```\n\n## Dataset \u0026 crawler\n\nThe dataset can be downloaded in PyG format and new features can be extracted from URLs using the crawler.\nA full guide for both tasks can be found \u003ca href=\"https://tristanbilot.github.io/#/phishgnn\"\u003ehere\u003c/a\u003e.\n\n## Training\n\nDuring training, the files located in data/training/processed will be used by default. The raw dataset is composed of urls mapped to around 30 features, including a list of references (href, form, iframe) to other pages, which also have their own features and their list of references.\n\n```\npython phishGNN/training.py\n```\n\n## Visualize node embeddings\n\nDuring training, it is possible to generate the embeddings just after passing through the Graph Convolutional layers. Just run the training with the following option:\n\n```\npython phishGNN/training.py --plot-embeddings\n```\n\n\u003ccenter\u003e\n    \u003cimg src=\"https://user-images.githubusercontent.com/40337775/160821779-8a6651c3-d4c0-4eca-bcd5-90910f35e766.png\" width=\"55%\"/\u003e\n\u003c/center\u003e\n\n\n\u003c!-- \u003ccenter\u003e\n\u003cimg src=\"embeddings.png\" width=\"60%\"\u003e\n\u003c/center\u003e --\u003e\n\n## Visualize the graphs\nA tool has been developed in order to visualize graphically the internal structure of web pages from the dataset along with their characteristics such as the number of nodes/edges and whether the page is phishing or benign.\n\nTo visualize these data, first follow the instructions in the installation part, run the `visualization` script and open the file `visualization/visualization.html`.\n\n```bash\npython visualization.py\n```\n\n\u003ccenter\u003e\n    \u003cimg width=\"75%\" alt=\"Screenshot 2022-03-30 at 12 39 01\" src=\"https://user-images.githubusercontent.com/40337775/160822019-712227d8-e000-4781-b55d-8b089409d53d.png\"\u003e\n\u003c/center\u003e\n\n## Citation\n\nIf you use this code, please cite the following paper.\n\n```\n@inproceedings{bilot2022phishgnn,\n  title={Phishgnn: a phishing website detection framework using graph neural networks},\n  author={Bilot, Tristan and Geis, Gr{\\'e}goire and Hammi, Badis},\n  booktitle={19th International Conference on Security and Cryptography},\n  pages={428--435},\n  year={2022},\n  organization={SCITEPRESS-Science and Technology Publications}\n}\n```\n\n## License\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003eMIT\u003c/a\u003e\n  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftristanbilot%2Fphishgnn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftristanbilot%2Fphishgnn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftristanbilot%2Fphishgnn/lists"}