Tracking Users Online — Part 1

Posted by & filed under , .

Binary globeI’ve written before in my blog about privacy online, cookies, user tracking and so on. The idea isn’t new at all and it is encountered on every decent website out there. (In fact, I use a few different solutions on my blog for various reasons: analyzing the number of unique visitors, page views, filtering comments, applying gravatar photos where needed and so on.) Despite all of this, I find out that there is still quite a large segment of people who are either oblivious to this or don’t understand it. What’s even more worrying is, as I found out recently, that some of these are actually developers or techies themselves.

For that particular segment, I decided to start a project on GitHub coupled with a series of posts on my blog to showcase some of the techniques involved in this.

The idea is rather simple: I’ve hosted the PixelServer project on GitHub — this contains all the source code and configuration files etc for implementing a HTTP server component which is responsible for dropping cookies on the user side, generating log entries etc. As I modify the code and make a new release of this in GitHub, I will post a new entry on my blog to talk about the changes I’ve made in the source code and why they are necessary (or nice to have perhaps) and talk about how these changes can be applied on a website to track users.

Hopefully by the time the project grows a bit, most of the myths and about online user tracking will disappear and so will the unknowns around this subject.

A bit about the project: it’s written in Java using elements of the Spring framework, especially the MVC side of it — though truth being told I’ve never used the “V” (view) side of it 🙂 I’ve chosen to use Java 8 for this — however, as of yet, at the time I’m beginning to write this project, there is nothing specific to Java 8 in the code, so you could easily compile that in Java 7 or even 6. Be aware though that this might change in the future, so if you’re going to downgrade the JDK version keep an eye on changes in each releases.

The project itself generates a self-contained WAR file — the view is that one should be able to easily throw this into a Tomcat setup or a similar container, change a few configs here and there and be up and running in very little time. Even more, because the application is stateless, this can be easily scaled up horizontally by adding more servers and have a load balancer in front of these.

The web application offers only one (at the moment) servlet — which simply does whatever is necessary for user tracking. I envisage this will change in time as we might want to offer things like JavaScript support and so on, as these changes are made, as I mentioned already, I’ll post a new blog entry here to detail the changes.

For now, set your git up with this project repo, clone it locally and get set up and watch out for my next blog post (soon!) which will contain a bare bones project for tracking users.