Welcome to the official Fingerprint Central repository! This project is developed as part of the Google Summer of Code 2016 by Pierre Laperdrix for the Tor organisation.
Fingerprint Central is a platform where users can learn about browser fingerprinting and where developers can study device diversity. You will find here global information on the project. Additional details on the technical implementation can be found in readmes in the fingerprint folder.
Integration with the Tor Project
FPCentral is officially part of the Tor Project since the end of 2017. An instance has been launched here: https://fpcentral.tbb.torproject.org/. The website will also be used to reinforce QA efforts of the TBB development team.
The goal of FP Central is to collect browser fingerprints from thousands of users and study the diversity of devices on the Internet. Data is key in understanding how much identifying information transpires through a browser and collecting fingerprints will help developers design smart defenses against unwanted leaks.
FP Central is designed first and foremost for the Tor community and Tor developers. The aim is to remove as much differences as possible between Tor browsers to reinforce the privacy and anonymity of Tor users.
FP Central is built in a way so that tests can be added and removed easily. Any developers can quickly set up a test to find out if a a fingerprinting-related fix is working or to study a newly discovered technique.
The only way to launch FP Central is through the run.py script. Other ways will be added later on as new features get added to the project.
For an easy installation, you can download everything through pip by executing the following instruction at the root of the repo.
Creation of your virtual environment
Activation of your virtual environment
Local installation of packages through pip
pip3 install -r requirements.txt
Then you need to have MongoDB running on your system. Refer to the official documentation HERE for instructions on how to install and run it on your operating system.
After this step, you can directly run
By default, the website is launched on port 5000.
Technology behind the project
Here is the list of technology or libraries currently used by the project for the back-end:
- Python 3 (Official - Debian - Ubuntu - Fedora)
- Flask (Official - GitHub - Debian - Ubuntu - Fedora)
- MongoDB (Official - GitHub - Debian - Ubuntu - Fedora)
- PyMongo (Official - GitHub - Pypi - Debian - Ubuntu - Fedora)
- Flask-Babel Official - GitHub - Pypi - Debian - Ubuntu - Fedora)
- Flask-PyMongo (Official - GitHub - Pypi)
- User agent parser (GitHub - Pypi)
And for the front-end:
- Bootstrap (Official - GitHub)
- Sandstone Bootswatch theme (Official - GitHub)
- jQuery (Official - GitHub)
- Highcharts (Official - GitHub)
- Date Range Picker (Official - GitHub)
- Bootstrap Table (Official - GitHub)
- Font Awesome (Official - GitHub)
You will find below the list of currently supported features.
- Basic front-end and back-end with Flask and Bootstrap
- Support of a dynamic test suite
- Addition of MongoDB and storage of collected fingerprints
- Addition of standard and Tor Browser specific fingerprinting tests
- Support of returning visitors
- Addition of basic statistics (for users + global page with aggregate statistics)
- Addition of finer-grained statistics with lifetime stats, epoched stats and browser version stats
- Addition of an API to get specific statistics easily
- Support for localization
- Addition of a page for acceptable Tor fingerprints
- Support of additional browsers through the tagging system
As the project is in early phases of development, it is subject to heavy modifications and refactoring. For that reason, I'm not accepting pull requests for the moment. However, as soon as the project is online, I'll gladly welcome any contributions with open arms to fix bugs or add new features.
This project is licensed under the MIT License. See the LICENSE file for details.