AdSensible open atop Google's ad personalization viewer
Concept art - it was called BadSense back then
Companies today are collecting an unprecedented amount of data about their users - sometimes, a scary amount. We think that users should have a say in how their data is used. Since many companies have ambiguous opt-out systems that might even reset themselves without notification, we decided to take a novel approach to preserving user privacy.
What it does
AdSensible lets you manually add yourself to any Google AdSense demographic with the click of a button. This means that you can turn yourself into a "Romance Film Fan" or a "Skiing & Snowboarding Enthusiast" despite having no real affinity for either. Do this enough, and the data that Google collects about you becomes diluted to the point of complete inaccuracy.
Below is a demonstration of AdSensible adding a user to the the "Baker" demographic. (Note that AdSensible normally does this in the background, and the search pages are only for demonstrative purposes.)
To add a user to the demographic, AdSensible:
Chooses the word "baker" to calculate similar words such as "cooking"
Pairs similar words to "cooking" with similar templates, i.e. "cooking club near me"
Performs a search for these and other generated terms
Sends POST requests to the tracking endpoints for each link on the first page of results for each term. In demonstration mode, each link is highlighted as its tracking endpoint is hit.
Repeats this process anywhere between 50 and 100 times - We found that this range remains light on computational resources, while consistently changing ad preferences.
How we built it
- Used a Flask server hosted on Heroku to provide an endpoint to generate search phrases based on words.
- Utilized an internal socket API to pass information between different extension components.
- Mocked up and designed front-end (including graphics).
- Created a list of useful search term keywords.
Challenges we ran into
- Minimizing user interaction beyond installing the application. Understanding and working with the quirks of Chrome's extension system was difficult at first, but we were able to come up with an architecture that sidestepped most of the challenges we were facing.
- Making a large amount of requests to Google in a short amount of time without getting rate-limited.
- Reverse-engineering Google's result page structure and click-tracking system.
Accomplishments that we're proud of
- Generating search terms automatically based on single-word input.
- Polished graphic design
What we learned
- How to write an application to interface with an undocumented system.
What's next for AdSensible
Google isn't the only online service that uses your data. In the future we hope to apply AdSensible's user data obfuscation technology to other platforms such as Facebook, Amazon, and other sites that collect data.