malte311 / fpfool Goto Github PK
View Code? Open in Web Editor NEW:globe_with_meridians: A Google Chrome browser extension to protect against browser fingerprinting :globe_with_meridians:
License: MIT License
:globe_with_meridians: A Google Chrome browser extension to protect against browser fingerprinting :globe_with_meridians:
License: MIT License
If a search param is not found, we get it. After this, we can get the search terms as well.
Choose terms randomly, even if the first try fails. At the moment only the first try is random, afterwards we choose sequentially.
Use the chrome.storage.sync
api to store the queue persistently. We could do the same with the browser history.
Do not add keywords multiple times to indexedDB. Maybe use timestamps to make sure we did not add an entry before.
We can not get search terms from many urls at the moment. It works only for a small number of sites. The goal is that this works for more sites.
When search params do not exist yet, wait for the next getSearchTerm(...)
call until the first call is over, because the first call will get the search params such that the following calls do not need to do the same work again.
Remove the Max. history entries setting and add a Max. number of tabs setting instead.
The following algorithms need to be implemented:
execDefault()
(maybe just open a connection and do nothing, then close the connection after a while)execHistory()
(especially update the browserHistory
variable after visiting sites and remember to keep it up to date even in case the history gets cleaned up)When saving the queue, the size can explode. Either do not save the queue, i.e., reset it on every browser restart, or make sure it's size does not explode.
Since this extension visits websites, these websites are saved in the user's browser history. This can be confusing to the user because he or she did not visit these sites at all.
Therefore, it could be a good idea to clean up the history every time a tab has been closed (or whenever the browser is quit, i.e. the onSuspend
event is fired).
Each tab should execute the content script, such that each tab independently searches and navigates.
Dummy searches are being deleted, but it seems that this does not work always. The database should not contain any dummy search terms!
Maybe TravisCI can be used to automatically deploy the extension.
Maybe use persistent storage for
Search terms should be available for all domains of the same website, e.g. google.com
and google.com/search
should be able to use the same search terms. This should also apply to subdomains.
Add functionality to the "Reset statistics" button.
The tool does not detect all input fields correctly at the moment. This should change.
Creating always the same fake connections could have contra-productive effects. Therefore, the idea is to change the algorithm based on some criteria. These criteria could be:
Fill database with travel related entries.
Take a look at IndexedDB and maybe use it for search term generation.
At the moment, the extension does not keep the usual window size. The problem is that the hidden window gets closed after the real window such that chrome saves the size of the hidden window for the next start.
Maybe it could be useful to have a .json
file containing constants.
At the moment, some constants are declared multiple times, because they are in different scopes (e.g. one time in content script and another time in background script). If one wants to change a constant, then it has to be changed at two different places, which is not preferable.
Databases should get a clean up such that only recent activity is relevant.
After a while in the browser, even without closing the window, the extension seems to start again. It should not restart in the mid of a session - only at the beginning of a new session.
Current formula is connectionLimit = result.connectionLimitFactor * sum;
.
Problem is that the sum of visits increases due to the extension. This means that the limit increases from day to day, which should not happen.
Searching and navigating on a page leads to a redirect. The redirect leads to a reload of the content script and therefore the disconnect call does not come through.
Create a readme.md file containing relevant information for this project.
Limit the number of tabs at the same time.
Add an user interface to make the application parameterizable.
At the moment, the extension does not close the extra window in case the user closes his real browser window.
Maybe it could even be useful to not close the extra window. In this case: When should the window be closed?
Some more ideas to improve this algorithm:
Statistics are loaded only once. They should be updated when the page is kept open and some values change.
Now, don't just take the same words a user already searched for. Instead, use the database to generate a new search term which should be antonym to the original one.
The extension page (the page which is loaded when clicking on the extension icon next to the search bar) could display some statistics, e.g.
Tabs should be limited in order to prevent the tool from crashing due to too much cpu workload.
Searching for random words is not the most realistic way to search for something. Therefore, it could be useful to adopt the searching algorithm. Some ideas:
.json
)Mark sites on which searching failed as non-searchable.
It could be useful to display the id of the corresponding tab as well.
Maybe the extension could start its work again after some time after it has finished its work.
Use TravisCI for automatically generating JSDoc on gh-pages
branch.
In order to make the behavior of the extension to look like a real human interaction, there should be some delays:
The size is limited to maxConnectCount
, which is now a scaling factor only. It should be rather set to connectionLimit
.
Removing tabs from the currentTabs
array causes trouble when multiple content scripts are executed at once.
When content scripts are working in parallel, they close their tabs in parallel, which leads to removing tabs from the currentTabs
array simultaneously.
In addition to that, there is a chance that at the same time a different content script asks if it should get executed ('isExec'
), which can lead to a undefined
response message.
See title. Maybe use a new branch.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.