Cookie 切割器、吞噬者和粉碎者

作者:Marcel Gagné

Bonjour,欢迎再次来到我的餐厅“Chez Marcel”。请坐。本月的特色是互联网和内联网。您看,世界已经变得非常小,每个人或企业都在建立网站。“Chez Marcel”甚至也在考虑向全世界开放餐厅,但 François 觉得这会破坏这里的私密氛围。

François!你在那里闲坐着干什么?给我们的客人上酒。快点!快点!

在 François 为您准备夏布利酒时,我想向您介绍今晚菜单上的特色菜肴——cookie 切割器、吞噬者和粉碎者。现在,我非常清楚我的专栏作家同事 Reuven Lerner 曾经为您提供过制作 cookie 的食谱(请参阅《LJ》第 45 期“在熔炉旁”)。我今天想做的是分享销毁或删除 cookie 的食谱。毕竟,太多的 cookie 会让人发胖,不是吗?

在品尝我们的第一道菜之前,了解一下 cookie 的历史和解释可能会很有趣。互联网 cookie 有时被称为“魔法 cookie”,绝不应与“魔法蘑菇”混淆,因为互联网 cookie 是不可食用的。Cookie 只是当您访问网站时传输到您的浏览器(或系统)的小型文本文件。Cookie 在您的系统上什么也不做,只是静静地待在那里。这是因为,正如我在您喝完最后一杯酒之前提到的,cookie 只是文本——没有代码或程序。

cookie 背后的整个想法是,服务器会给您一个 cookie 作为标记,以指示您之前访问过哪里。该 cookie 可能会存储用户名和密码以访问特定的网站。(网站通常——但并非总是如此——会对这些信息进行编码,以便查看您的 cookie 文件的人只会看到看起来像垃圾文本的内容。看看您自己的 cookie 文件。)当您下次访问该网站时,服务器会询问您是否曾向您发送过任何 cookie,您的浏览器会回复并发送之前的 cookie。这样,网站就会认出您,引导您到您的虚拟餐桌。您看,没有任何网站,无论多么聪明,能像 François 那样认出走进来的您。

最初,cookie 由一个网站留下,并由同一个网站接收,从而实现某种交互式会话。例如,在您最喜欢的网上商店购物一整夜后,您决定结束并第二天早上再来。第二天,商店的网站请求它留给您的 cookie,并且“知道”您的购物车中有三磅奶酪、两罐第戎芥末酱和一瓶不错的赤霞珠。您看,cookie 非常有用。

问题在于,cookie 也可以在更大的域(例如广告联盟)内共享。使用这些共享 cookie,广告商可以建立您的喜好和厌恶的档案,专门为您量身定制和定向广告。过一段时间,您访问的每个与某些横幅广告商打交道的网站都知道您对布里干酪的弱点,并且很快,您就破产了。您的隐私受到了侵犯,以便其他人可以提供向您出售您无法抗拒的东西。许多人反对这种建立用户档案的方法,并认为使用 cookie 非常不道德。如果您担心 cookie,请考虑我们菜单上的以下项目。

最简单的方法是直接在浏览器中拒绝所有 cookie。如果您使用的是 Netscape,请单击“编辑”,然后选择“首选项”。在弹出的窗口中,查看左侧菜单。单击“高级”,然后选择您要处理 cookie 的级别。请注意,您可以完全拒绝 cookie,全盘接受它们,或者请求在浏览器接受它们之前警告您。(见图 1。)您还可以根据 cookie 是否源自正在查看页面的服务器来进一步指定此行为。换句话说,拒绝来自横幅广告服务器或您正在访问的网站链接到的任何其他主机的 cookie。

Cookie Cutters, Munchers and Crunchers

图 1. Netscape 的 Cookie 对话框

如果您不想费心选择这个 cookie 或那个 cookie,您可能会发现接下来的项目更符合您的口味。毕竟,当访问一个提供数十个 cookie 的页面时,一遍又一遍地单击“确定”或“取消”可能会很累。我们如何避免这种情况呢?

您可以采取更困难的方式。每次您想要启动浏览器时,从您用户名的 .netscape 目录中删除 cookie 文件,然后启动 Netscape。允许我演示一下,不是吗?

rm -f ~/.netscape/cookies

波浪号字符 (~) 是一种指代您的主目录的方式。$HOME 变量在这里也适用。这个简单的命令将很好地清理一切。然后,只需单击您的 Netscape 图标,或从命令行启动 Netscape。您也可以像我一样,编写一个非常简单的 shell 脚本来完成这项工作。我们称之为“netscape_clean”。它看起来像这样

#!/bin/bash
# This starts Netscape with a clean cookie file.
rm -f ~/.netscape/cookies
/usr/bin/netscape
请记住,netscape 可执行文件的路径可能因系统而异。在我的系统上,它位于 /usr/bin 下。

正如我之前提到的,cookie 可能非常有用,因此简单地删除所有内容不一定是正确的方法。技术支持网站可能无法处理您的查询,网上商店及其购物车可能根本无法工作,或者内容可能完全被拒绝给您。您可能希望更有选择性地销毁内容。

清单 1 中显示的食谱需要一点 Perl 来增加味道。您仍然需要在当前浏览器会话之外运行它。这里的区别在于,系统会逐行提示您要保留的 cookie。如果它们看起来是您想要的,只需输入大写字母“A”表示“接受”并继续。眼尖的人会注意到,要从活动文件中删除 cookie,您只需按 RETURNENTER 键。Et voilà!一个更精简的 cookie 文件,只包含有营养的信息。

清单 1

当然,您不必这样做,但我的 Perl 脚本应该可以作为您根据自己的口味进行调味的绝佳起点。一个想法可能是添加对文件顶部的 Netscape 注释行的检查,这样您就不需要接受或删除这些注释行。它们将被简单地复制到另一个文件中。然后再想一想,也许不是。它们只是注释,如果我的 Netscape 程序缺少它们,它会重新添加它们。

在试验了上面的食谱后,我决定深入 Web 的核心,以便为我尊敬的客人您提供另一种食谱。我的旅行带我来到了 LinuxBerg,在那里搜索“cookie”一词让我找到了 Phil Darnowsky 的“cookiecutter”,这是另一个包含“禁止和允许”列表的 Perl 脚本。他的脚本采用了与我自己的创作不同的方法,但结果是相同的——没有您不想要的 cookie。

在结束本月专栏之前,我想建议您,您的在线隐私可能比简单地决定谁可以通过 cookie 收集您的信息更重要。还有其他方法可以跟踪您的上网习惯,并在一定程度上跟踪您的身份,只需向您的浏览器请求信息即可。要演示这一点,请查看 Privacy.Net 的匿名者隐私分析,网址为 http://privacy.net/anonymizer/。您可能会发现采样一个网站可以发现关于您和您正在运行的系统的信息非常有趣(甚至有点可怕)。

有人会问,如何阻止此类信息呢?一种方法是在您的浏览器和世界其他地方之间运行代理。一个例子是 Internet Junkbusters Proxy,这是一个在 GPL 下发布的程序,适用于 Linux 和许多其他平台。

您可能还希望通过在为此类匿名性提供的服务背后进行所有冲浪来完全阻止所有窥探。这就是匿名者发挥作用的地方。使用这家公司的服务(他们提供免费和高级服务),您可以将您想访问的页面输入到提供的表格中,并完全隐身上网。

这些在 Web 上保护您匿名性的方法超出了 cookie 的范畴,但 cookie 仍然是一种迷人的野兽。如果您想了解关于 cookie 的一切,您应该访问 Cookie Central。该网站包含大量关于互联网 cookie 的信息。

好了,朋友们,墙上那可怕的钟告诉我,又快到打烊时间了。在您离开之前,请考虑尝试一个有趣的 cookie 演示——访问 Privacy.Net 的 cookie 页面,网址为 privacy.net/cookies。我提到这个是因为,作为演示的一部分,他们会为您“烘焙”您最喜欢的 cookie(在虚拟意义上)。您的厨师承认自己有点迷恋 Fig Newtons,这是我的选择。您的口味可能不同。巧克力曲奇,怎么样?

再见,朋友们。记住,您永远欢迎来到 Chez Marcel。祝您用餐愉快!

资源

Cookie Cutters, Munchers and Crunchers
Marcel Gagné (mggagne@salmar.com) 居住在安大略省密西沙加市。在现实生活中,他是 Salmar Consulting Inc 的总裁,这是一家系统集成和网络咨询公司。他也是一名飞行员,撰写科幻小说和奇幻小说,并编辑科幻、奇幻和恐怖杂志 TransVersions。他热爱 Linux 和所有 UNIX 版本,甚至会在公共场合承认这一点。
加载 Disqus 评论