{"id":23802028,"url":"https://github.com/spirals-team/fp-scanner","last_synced_at":"2025-10-09T11:32:23.310Z","repository":{"id":88343771,"uuid":"135439746","full_name":"Spirals-Team/FP-Scanner","owner":"Spirals-Team","description":"Repo of code for FP-Scanner article","archived":false,"fork":false,"pushed_at":"2018-05-30T12:32:08.000Z","size":6005,"stargazers_count":13,"open_issues_count":1,"forks_count":4,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-09-06T15:40:45.596Z","etag":null,"topics":["browser","fingerprinting","fingerprinting-algorithm","inria","privacy","web"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Spirals-Team.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,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-05-30T12:30:42.000Z","updated_at":"2022-11-17T15:07:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"b3c4d08b-55d3-4527-8f03-088c2b476978","html_url":"https://github.com/Spirals-Team/FP-Scanner","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Spirals-Team/FP-Scanner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Spirals-Team%2FFP-Scanner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Spirals-Team%2FFP-Scanner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Spirals-Team%2FFP-Scanner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Spirals-Team%2FFP-Scanner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Spirals-Team","download_url":"https://codeload.github.com/Spirals-Team/FP-Scanner/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Spirals-Team%2FFP-Scanner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001301,"owners_count":26083058,"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-10-09T02:00:07.460Z","response_time":59,"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":["browser","fingerprinting","fingerprinting-algorithm","inria","privacy","web"],"created_at":"2025-01-01T22:17:55.325Z","updated_at":"2025-10-09T11:32:23.304Z","avatar_url":"https://github.com/Spirals-Team.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Repository containing the code of FP-Scanner's paper.\n\n# Create virtual environment and install dependencies\n\nRun the command below to create a virtual environment.\n```ruby\nvirtualenv --python=/usr/bin/python3 myvenv\n```\n\nThen activate the virtual environment.\n```ruby\n. myvenv/bin/activate\n```\n\nFinally, install the dependencies.\n```ruby\npip install -r requirements.txt\n```\n\n# Import database\n\nOur prototype relies on MongoDB to store the fingerprints, thus you need to ensure that MongoDB is running.\n\nRun the command below to import the database. \n```ruby\nmongoimport --db usenix18 --collection fingerprint --file fingerprints.json \n```\n\n# Scan fingerprints\n\nFirst, we analyze the fingerprints present in the database.\n\n```ruby\npython main.py\n```\n\nIt logs information on the screen about the results of the analysis and generates two csv result files in the *results* folder:\n- *res_prediction.csv* that contains information on the tests that passed or not for each fingerprint;\n- *res_real_values.csv* that contains information on the OS and browser predicted for each fingerprint.\n\nThen we analyse these files to obtain the accuracy of FP-Scanner, FingerprintJS2 and Augur.\n\n```ruby\npython main.py analyse\n```\n\n\n# Benchmark\n\nTo run the benchmark that measures the execution time of the scanner, run the command below.\n```ruby\npython main.py bench\n```\n\nIt generates three files *bench_situation1.csv*, *bench_situation2.csv* and *bench_situation3.csv* that corresponds to\nthe three cases presented in the article:\n1. Run all scanner tests even when an inconsistency is detected;\n2. Stop running tests when an inconsistency is detected;\n3. Run only analysis of the pixels.\n\nThese files contain a single column called *elapsed_time*, which represent the execution time \nneeded to run the set of tests.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspirals-team%2Ffp-scanner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspirals-team%2Ffp-scanner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspirals-team%2Ffp-scanner/lists"}