Web beacon 初探

缘由

近来读过不少服务提供商的隐私政策了,基本上每个都提到了Web beacon这个名词,而且通常会和Cookie一并提及。

比如豆瓣的隐私政策:

除 Cookie 外,我们还会在网站上使用网站信标和像素标签等其他同类技术。例如,我们向你发送的电子邮件可能含有链接至我们网站内容的点击URL。如果你点击该链接,我们则会跟踪此次点击,帮助我们了解你的产品或服务偏好并改善客户服务。网站信标通常是一种嵌入到网站或电子邮件中的透明图像。借助于电子邮件中的像素标签,我们能够获知电子邮件是否被打开。

对于这个名词很陌生的我,便决定搞搞清楚它到底是什么东西。

释义

Web beacon,中文称网络信标,又称网页臭虫(Web bug),是可以暗藏在任何网页元素或邮件内的1像素大小的透明GIF或PNG图片,常用来收集目标电脑用户的上网习惯等数据,并将这些数据写入Cookie。

实验

豆瓣的隐私政策中说,网络信标可以检测所发送的电子邮件是否被打开。那实现这个的原理是什么呢?

原理

在邮件中嵌入img标签,并添加src属性,那么当该邮件被打开的时候,src的值——一个指定的url,将会被访问。由此,被访问的url,将会得知该邮件被打开过。

步骤

首先打开一个terminal,运行如下命令:

python -m SimpleHTTPServer 8000

该命令的含义是用Python在8000端口号创建一个SimpleHTTPServer,可以通过http://localhost:8000访问。当被访问时,terminal上会打印一行log信息。

之后,用自己的A邮箱发邮件给B邮箱,内容是:

<img src="http://localhost:8000" height="1" width="1" ></img>

上面这个像素为1的代码即为网络信标。

注意: 需要用HTML编辑模式才行,我实验的时候是使用的QQ邮箱,它可以使用HTML编辑模式】

最后,B邮箱收到A邮箱发来的邮件,点开该邮件,发现terminal上新打印了一行log信息。重新点开该邮件,发现又新打印了一行log信息。这说明,网络信标确实可以检测邮件是否被打开。

总结

上面的只是最基本的用法,但即便是如此,我也被这样的功能所震撼。更深入的用法,可以结合Cookie来使用,或者是用较新的Web技术——Beacon API(信标API)。