The methodology is described here: https://cyberlaw.stanford.edu/blog/2011/09/tracking-trackers...
Even the DNT header, which is widely recognized as a failure since it relies on the perpetrators to regulate themselves, protects you better against tracking than blocking third-party cookies. It's just too easy to track people by other means, and the companies that aren't already doing it will certainly start if a meaningful number of people suddenly block third-party cookies.
The only pragmatic and effective way to avoid being tracked today is to use something like uBlock (more efficient ABP + noscript) with the third-party script and frame blocking features enabled (whitelisting third-party scripts/frames only on those sites that break something you want to see at the cost of possibly being tracked by something the block lists don't catch.)
Sometimes there is value in stating your position clearly, and the DNT header provides a standard, unambiguous way of doing that. It is a lot harder to claim that your users wanted tracking as a "feature" (or that asking their opinion was to difficult or impossible) when lots of of the HTTP requests have a header that explicitly states users' opinion.
http://lcamtuf.coredump.cx/p0f3/
10-20 bits of entropy right there (you need 33 bits of entropy to uniquely identify 1 of 6.6 billion people on earth).
...or traceroute of the user's routers, done within the confines of an existing TCP/IP connection, bypassing every stateful firewall and address translation (exhibit 3 in page):
HTTP client = Opera 15.x-18.x (User-Agent string is fake)
I'm on Chrome, and not faking a User-Agent. Uptime = 9 days 17 hrs 17 min (modulo 49 days)
This is just wrong.Everything else was correct, but everything else is available in HTTP headers, so isn't really that interesting.
> 10-20 bits of entropy right there (you need 33 bits of entropy to uniquely identify 1 of 6.6 billion people on earth).
This reminds me of this[1].
Vardump: notice that you get almost the same uptime for your Mac and your Windows PC: 19 days 18 hrs 10 min. It appears your router (NAT) is handling / modifying the tcp/ip timestamp.
Btw, even if the timestamp is wrong, it can provide some entropy (=measure of uniqueness compared to other users).
Detected OS = Mac OS X [generic]
HTTP client = Opera 15.x-18.x (User-Agent string is fake)
Network link = unknown
Distance = 11
Language = English
Uptime = 19 days 18 hrs 10 min (modulo 71 days)
(Uptime is off by 10 days, real uptime is 29 days.)Or Windows 10 + newest Chrome:
Detected OS = Windows 7 or 8
HTTP client = Opera 15.x-18.x (User-Agent string is fake)
Network link = Ethernet or modem
Distance = 11
Language = English
Uptime = 19 days 18 hrs 10 min (modulo 71 days)
(Uptime is off by 14 days, real uptime is about 5 days.)No transparent proxies, just NAT, both systems share IP.
> Detected OS = Windows 7 or 8
> HTTP client = Firefox 10.x or newer (User-Agent string seems legit)
> Network link = DSL
> Distance = 10
> Language = English