2012-12-16 71 views

回答

163

首先,通过HTTP标头设置和检索cookie。如果您的浏览器向http://example.com发送请求,则响应可能会返回一个标题为Set-Cookie: foo=bar的标头。您的浏览器会存储此Cookie,并且在后续对http://example.com的任何请求中,您的浏览器将在Cookie标题中发送foo=bar。 (或至少在cookie过期或被删除之前。)无论是谁发起请求或上下文是什么,浏览器都会将foo=bar cookie与任何请求发送到http://example.com。如果http://example2.com包含标签<img src="http://example.com/img.jpg">,则即使http://example2.com负责发送请求,浏览器也会在提取http://example.com/img.jpg时发送Cookie foo=bar

因此,如果网站A包含由网站B提供的广告,则网站B可以在您的浏览器中设置Cookie。例如,也许网站A使用<iframe src="http://websiteB.com/ad.html></iframe>来从网站B投放广告。然后,当您的浏览器访问http://websiteB.com/ad.html时,响应将返回一个Set-Cookie标头,该标头用一些唯一的随机字符串设置cookie。如果网站C还包含来自网站B的广告,则当网站C上的广告从网站B获取时,将发送该唯一cookie。

就网站B如何知道您访问的是哪个实际网站而言,有很多种方法。在某些情况下,当浏览器向一个网站发送请求时,它会告诉网站您来自哪个网站。所以当浏览器去取http://websiteB.com/ad.html时,它可能包含HTTP头Referer: http://websiteA.com,告诉网站B该请求是由网站A发起的。每当网站B看到它分配给你的唯一随机字符串时,它可以检查引用头在其日志中添加您去过的地方。如果网站A与网站B合作,则A可以直接告诉B你来自网站A.例如,网站A可以使用<iframe src="http://websiteB.com/ad.html?referer=websiteA.com">来包括来自网站B的广告,然后网站B将会看到网站B中的引用者请求参数。

这有帮助吗?你链接的答案有哪些特定部分对你没有意义?

+2

嗨艾米莉:)非常感谢您的详细解答!我只有一些问题:首先,网站A不与网站B合作,是否有另一种让网站B从哪个网站来的机制?其次,除Cookie之外,还有其他第三方跟踪工具吗? – mounaim

+4

@mounaim:对你的第一个问题:如果A不与B合作,它不会在其网站中包含任何B的跟踪代码。所以跟踪在逻辑上是不可能的。 第二个问题:是的,除了cookies之外,还有很多跟踪方法。 EverCookie http://samy.pl/evercookie/是研究的良好开端。例如,HTML5的localStorage也可以用来存储和检索标识符。此外,也可以使用浏览器指纹https://panopticlick.eff.org/进行隐藏。 如果你想知道更多,你可以给我留言,以获得大量的材料。 – Thorben

+1

@Thorben,除非您的浏览器使用Referrer HTTP标头。 – nhooyr