How Do Internet Advertisers Use Third-Party Cookies?
There is no need for a "supercookie". Each server reads its own domain's cookies. The servers pass information to each other through URLs. (Or, less commonly, through backchannels.)
For example, say you go to example.com
. You have an example.com
cookie that reads user=1032354
. You retrieve http://www.example.com
. Of course, you send your cookie to the web server, which outputs the following in the web page:
<IMG href="http://www.advertiser.exmaple/add.cgi?source=example.com&user=1032354">
Of course, when your browser goes to www.advertiser.example
to get the image, it happily sends the advertiser.example
cookie. Now, the server at advertiser.example
knows which user you are on its site (from the cookie you sent it) and which user you are on example.com
(from the URL).
With the backchannel method, it operates more like this:
1) You go to www.example.com
and send it your example.com
cookie.
2) The web server at example.com
gets your user ID from the cookie and sends a JSON request to advertiser.example
to create a session for you. It passes it your example.com
user ID.
3) The web server outputs an image link to advertiser.example
with the session ID created in step 2.
4) When your browser connects to advertiser.example
, it sends the advertiser.example
cookie in the headers and the session ID in the URL.
5) The server at advertiser.example
can now associate your session with their own user record and your user record at example.com
and it can output an appropriate ad.
It can also be done through referrers.
Update: No cookie is needed at the main sites. A single advertiser cookie will do.
1) You go to a site, you send no cookie. The site assigns you a new session.
2) The web page has an embedded image link to the advertiser's site with the session embedded in the URL.
3) You fetch the embedded image, sending your session ID (in the URL) and your cookie (for the advertiser's site).
4) The advertiser now associates your session on the main site with your account in their database. It communicates this to the site's web server through a back channel, embedded in an URL, or other means.