记者的浏览器本身就是一处风险。它带着你的登录状态、你的浏览历史、你所在编辑部的 IP 地址——而你为一篇报道打开的每个页面,都能从中读到足够多的东西,知道是谁在问。下面六种情形就是这份代价的所在,以及同样的调研在 Argus 里怎么做。
隔离
打开页面,而不自报家门
每个 Argus 环境都从自己的目录开始——独立的存储、缓存和 Cookie 存储,不从任何其他环境带过来任何东西。你为了读某家公司的招聘页、或者盯着一个和选题有关的论坛而打开的那次会话,完全不知道另一个你登录了邮箱、内容管理系统或自己社交账号的会话。会话恢复是关闭的,所以上一次运行不会在新的一次里冒出来。
这件事是双向的,而且两个方向都重要:报道对象无法把这次访问和你对上号,而你积累下来的浏览记录也不会污染网站决定展示给访客的内容。你看到的是陌生人看到的那一页,而不是你的历史给你挣来的那一页。
指纹
他们看到的那台机器,不是你拥有的那台
网站不需要你登录也能认出你——硬件就够了。canvas、WebGL、屏幕、时区、CPU 核心数:它们合在一起点名你那台笔记本,可靠程度几乎不输 Cookie。Argus 环境呈现的则是一套生成出来的硬件身份——平台、内存、屏幕、时区和语言作为一整套自洽的组合一起生成,彼此不会互相矛盾。这套替换是在渲染器里施加的,位于页面之下:脚本看到替换后的值,是因为那里只有这一个值,而不是因为某个包装函数藏起了真的那个。
每个环境在多次启动之间都保留自己的身份。你用来盯某个 Telegram 频道的那个账号,每天早上看起来都是同一台可信的机器——只是从来不像你的那一台。

代理 · WebRTC
从事情发生的地方去读这条新闻
只对某一个国家展示的价格、只投给某一个地区的政客广告、给不同地理位置发送不同文字的页面——要核实其中任何一样,都意味着得从那里进来。从共享代理库里给这个环境分配一个代理,整次会话就都从那个地理位置进来。Argus 会对每个代理做健康检查,报告出口 IP、所属国家和延迟——而检查不通过的代理会直接拦下启动,而不是悄悄退回去,把你编辑部的 IP 盖在这次访问上。
WebRTC 是作为浏览器策略在每个环境上封死的——页面无法绕过代理读到你的真实地址,而且它不是一个你可能忘记打开的开关。带认证的 SOCKS5,也就是普通 Chromium 完全不会说的那一种,是在浏览器内部处理的。
环境 · Cookie 集
一个能活过一个下午的身份
盯一个社区盯上几个月,意味着做这件事的账号必须保持一致:同样的身份、同样的会话、同样的登录状态。在 Argus 里,这个身份就是一个环境——它的 Cookie 存在这个环境自己的存储里,而存成 Cookie 集的登录状态会在启动时注入会话,所以这个环境每次打开都已经是登录状态。
一条线口会变成一个装环境的文件夹:每一行都有自己的状态标记和备注——它盯的是哪个信源、上次使用是什么时候、绝不能拿它做什么。删除是软删除,所以一篇报道收尾时退役的身份,在报道重启时还能还原回来。

Reach · 数据集
先把信源清单建起来,再用一个身份去做
在盯一条线口之前,你需要那份清单:频道、子版块、订阅源,以及每天早上值得看一眼的账号。收集这些并不需要一次浏览器会话,而 Argus 有一个不用会话就能做到的步骤。Reach 通过它自己的通道把一个页面拉下来——一个 YouTube 频道、一个 subreddit 或一条 RSS 源会以结构化的行返回,每个视频、帖子或条目一行,而普通页面则以可读文本返回。
它走的是启动器自己的连接,而这正是值得弄明白的取舍:它很快,也不消耗任何会话,但它不使用该环境的代理和 Cookie,所以网站看到的是你的真实地址。把它用在公开的订阅源和那些被人看到你在读也无所谓的页面上——其余的一律用浏览器环境。需要登录才能看的页面,无论如何都得走浏览器。
把它找到的东西存进一个数据集,这份清单就不再是某台笔记本上的草稿文件:它是一张归你工作区所有、列名由你来定的表,可以排序、筛选、打标签,也可以交给替你顶班的同事。把这个收集步骤放上日程,它会在你还没坐到桌前时自己刷新。
然后用一个身份去处理这份清单。那些需要账号才能打开的行——对未登录访客隐藏帖子的社区、你必须被批准才能进的群组——由你为这条线口专门建的那个环境来打开,每次都用同一套指纹、同一批 Cookie 和同一个代理。这两半刻意是两种不同的工具:一种便宜而匿名,另一种谨慎而稳定;而把一个身份花在一件本来用不着它的任务上,正是身份被烧掉的典型方式。

随之而来的问题
这是 Tor 吗?它能让我匿名吗?
两个问题的答案都是否,而这个区别关乎安全。Argus 不是匿名网络:没有洋葱路由,没有流量混淆,也不能对抗能够监视网络的对手。它是一种让彼此分开的调研身份不会汇聚成同一个人的办法——每个身份一个环境,各自有自己的存储、自己那套自洽的设备,以及经由你自己选定的代理的独立出口 IP。对于真正需要匿名的威胁模型,请使用为此而造的工具。
两个调研身份会互相泄露吗?
通过存储或设备不会。每个环境背后是它自己的用户数据目录——独立的 Cookie、缓存、local storage、Service Worker——而且会话恢复是关闭的,所以上一次运行不会在新的一次里冒出来。每个环境还各自呈现一套生成出来的硬件身份,也各自可以走自己的代理。任何浏览器都分不开的,是行为:写作风格、活动时间、你联系的那些账号。
Argus 能看到我浏览了什么吗?
看不到。你的环境定义、代理、Cookie 集和文件夹会同步到你所在的组织,好让它们跟着你在机器之间走,但浏览会话本身——缓存、local storage 和正在使用的 Cookie 存储——留在运行它的那台机器上、该环境自己的目录里。浏览器只被交给一份启动载荷,除此之外什么都没有:它没有任何凭据,无法登录,也完全不知道你的账号。
做调研工作需要代理吗?
凡是不该让网站知道你编辑部地址的场合,都需要。Argus 不卖代理,接受任何 HTTP 或 SOCKS5 地址,包括需要用户名和密码的 SOCKS5。WebRTC 防泄漏是作为浏览器策略施加在每个环境上的,而不是某个人可能忘记打开的开关;健康检查不通过的代理会拦下启动,而不是退回你的真实连接。
一个身份能几个月保持一致吗?
能——这正是一个身份和一次性会话的区别。指纹存在环境上,每次启动都会重新施加,所以它下个季度呈现的设备和上个季度是同一台,它的 Cookie 和存储数据也仍在自己的目录里。也请让同一个代理跟着它:一个在两次访问之间变来变去的地址,正是一个长期账号会被拿来评判的东西之一。

