# 9. Tor Browser 不完全指南

# 1 Tor Browser 的简介

# 1.1 什么是 Tor

Tor 是 The Onion Route 的缩写,中文名称是洋葱路由,它是一个自由开源的专用于【网络匿名】的软件。Tor 的原理是在全球性设备的志愿节点组成的【覆盖网络】(Overlay Network)中多次转发和加密原始流量,实现分别向 ISP、目标网站服务器及各 Tor 节点自身隐藏网站访问者的真实 IP 地址或网络活动的效果。

Tor 的洋葱服务(onion service)包括为网站提供的洋葱地址/.onion 域名,可用于隐藏网站服务器的真实 IP。

用户可以访问 https://check.torproject.org/ 来检查自己是否已经连接到 Tor。如已连接到 Tor,会出现绿色洋葱以及“Congratulations. This browser is configured to use Tor.”;反之则出现“Sorry. You are not using Tor.”。

# 1.2 什么是 Tor Browser

Tor Browser (opens new window)The Tor Project (opens new window) 开发的旗舰产品,实质是整合了 Tor 的 Firefox 浏览器,可以被视为 Tor 的入口。

Tor Broswer 除了每次应用程序开启后连接到 Tor 时需要用户多等待几秒外,在用户体验上和其他浏览器并无太大差别,日常性使用 Tor Browser 并没有那么困难。

除了在 Tor Browser 使用 Tor,用户也可以将 Tor Browser 用作跳板,让自己常用的浏览器连接到 Tor。做法是将浏览器的本地 SOCKS 监听端口设定成 Tor Browser 的 9150 (Firefox 浏览器可以在设置中设定,Chrome 等默认使用系统代理的 Chromium 内核的浏览器需要借助 SwitchyOmega 等插件辅助设定)。

参见:
Tor 官网 (opens new window)
securityinabox | Tor Browser for Windows - 网络匿名及审查规避 (opens new window)
编程随想:“如何翻墙”系列:关于 Tor 的常见问题解答 (opens new window)

# 2 基于 Tor 的双重代理

# 2.1 使用双重代理的意义

使用基于 Tor 的双重代理的意义有二:

  • 突破针对 Tor 的网络封锁
    • GFW 能够有效阻断 Tor 直连和 obfs4 混淆协议,其手法可能包括:
      • 识别 Tor/obfs4 网桥的流量特征后并加以封锁
      • 封锁已知 Tor/obfs4 网桥节点的 IP 地址
  • 强化网络匿名防护
    • 在【Tor 直连】的场景中:
      • ISP 知道用户使用了 Tor
    • 在使用 Proxy+Tor【双重代理】的场景中:
      • ISP 知道用户访问了代理服务器,有可能知道用户使用了代理,
      • ISP 不知道用户使用了 Tor
      • 代理服务商知道用户使用了 Tor

建议当前网络环境可以直连 Tor 的用户也使用【双重代理】来实现更高强度的【网络匿名】。

# 2.2 双重代理的设置方法

初次打开 Tor Browser 时应用会弹出设置界面,要求用户先对 Tor 进行网络设置。连接到 Tor 后,用户还可以前往 Preference > Tor > Tor Settings 修改 Bridges 和 Advanced 项下的网桥和前置代理设置。

在初始网络设置界面中,勾选“使用代理访问互联网”。

输入自己的前置代理信息:

  • 代理类型
    • 在 SOCKS 5 和 HTTP/HTTPS 之间二选一
  • 地址
    • 本地地址是 127.0.0.1
  • 端口
    • 查看自己的代理客户端内查看本地 SOCKS/HTTP 监听端口
  • 用户名和密码(没有可不填)

# 3 为 Tor 设置网桥

# 3.1 使用网桥的意义

Tor Browser 的网桥原本是用于对抗【网络封锁】的,不过 Tor 和 obfs4 网桥自身都成为了 GFW 的封锁对象,meek-azure 网桥虽然可用但因速度过慢而意义有限。至少在中国,Tor 只有在使用 Shadowsocks 等可以突破 GFW 封锁的代理工具作为【前置代理】的情况下方可用。

obfs4 网桥无法翻墙,但仍可用于强化【网络匿名】。由于网桥列表是不完全公开的 (opens new window),仅从 IP 无法判定它就是网桥。网桥可能无法彻底隐藏用户使用 Tor 的事实,但仍可以提高第三方的追溯难度。

在使用 Proxy + obfs4 网桥+ Tor 的场景中:

  • ISP
    • 知道用户的真实 IP
    • 知道用户访问了代理服务器的 IP
    • 看到的是代理的流量(隐蔽性取决于代理的混淆方式)
    • 不知道用户实际访问的网站及网页内容
  • 代理服务商
    • 知道用户的真实 IP
    • 知道用户访问了网桥的 IP
    • 看到的是经过 obfs4 混淆后的流量
    • 可能知道用户使用了网桥,进而知道用户使用了 Tor
    • 不知道用户实际访问的网站及网页内容
  • 网桥
    • 不知道用户的真实 IP 与实际访问的网站及网页内容
  • 中间节点
    • 不知道用户的真实 IP 与实际访问的网站及网页内容
  • 出口节点
    • 不知道用户的真实 IP
    • 知道用户实际访问的网站
      • 网站使用 HTTPS 协议,出口节点不知道网页内容
      • 网站使用 HTTP 协议,出口节点知道网页内容

数据流向:

Tor Browser <=> 前置代理客户端 <=> (ISP-GFW) <=> 代理服务器 <=> 网桥 <=> Tor 中间节点 <=> Tor 出口节点 <=> 目标网站服务器

(网桥和 Tor 客户端都内置于 Tor Browser:应用程序 <=> Tor 客户端 <=> 网桥客户端)

# 3.2 网桥的设置方法

在初始网络设置界面中,勾选“我所在的国家对 Tor 进行了封锁”,之后选择“内置网桥”,目前有“obfs4”、和“meek-azure”网桥可选,这里建议使用“obfs4”网桥。

选择“obfs4”后,用户可以选择使用“内置网桥”、在线获取网桥或者手动输入网桥信息。用户可自行前往 https://bridges.torproject.org/ 获取更多的网桥,比较筛选出适合自己的网桥。

*Alpha 版的 Tor Browser 提供了测试用的 Snowflake 网桥,有兴趣的用户可以下载尝试。

参见:有关密码学的科普内容 | Proxy over Tor (opens new window)

# 4 使用三重代理

由于强大的匿名特性,Tor 被用于 spam 甚至不法用途,不少网站将 Tor 节点的 IP 列入了黑名单,对来自 Tor 的访问进行限制或禁止(如要求通过 reCAPTCHA/hCaptcha 图形识别验证、限制注册帐号、要求绑定手机号、冻结帐号等)。

【三重代理】是指在 Tor 的出口节点之后再套上一层【后置代理】,因此目标网站方只知道用户使用了代理,对用户使用 Tor 并不知情,因而可以改善对 Tor 不友好网站的访问体验。

参见:
编程随想|如何用 Tor 访问对 Tor 不友好的网站——扫盲“三重代理”及其它招数 (opens new window) (2020-08-31)
2047|沉默的广场:【三重代理】用Tor+迷雾通访问对tor不友好的网站 (opens new window) (2020-09-05)
2047|沉默的广场:用tor访问对tor不友好的网站(二)——使用V2Ray上游代理功能 (opens new window) (2021-03-10)