如果你曾看到“Nebula Proxy”这个词却感到困惑,这种反应很正常。至少有三样互不相关的事物都冠以此名,搜索结果将它们混为一谈,而且不少解释该词的页面都是由希望向你推销相关产品的公司撰写的。
我们是 Geonode,主要销售代理服务,因此在此先坦诚声明:“Nebula Proxy”并非您能从我们这里购买的产品,而且对于大多数访问本页的用户而言,购买商业代理也并非解决之道。 Nebula 是一款免费的开源软件。 如果你想在学校网络上访问被屏蔽的网站,使用我们的住宅代理不仅方法奇怪,而且成本高昂;我们稍后会解释为什么这种方法很可能根本行不通。我们之所以撰写这篇文章,是因为现有的解释大多含糊不清,而清晰的说明比推销话术更有用。
简而言之:大多数人所说的 Nebula 是一个 可自主托管的 Web 代理前端 —— 这是一个代你访问其他网站并在自身内部渲染这些网站的网站,因此从网络的角度来看,你始终只是在访问 Nebula。 该项目在 GitHub 上以 AGPL-3.0 许可证发布,基于专为这一用途设计的开源代理库系列构建,并且有大量由陌生人运营的公共实例。
最后这一点比本文中的任何内容都更为重要,我们稍后会再次提及。
关于“Nebula Proxy”的三个概念
区分清楚这三者,就能解决大部分困惑。
1. Nebula,即Web代理前端
这几乎就是大家所指的对象。GitHub 上的 NebulaServices/Nebula 将其描述为“一款支持数百个热门网站的惊艳且简洁的 Web 代理”。它是一个你在浏览器中访问的 Web 应用程序:你在输入框中输入一个 URL,该网站就会在 Nebula 自身的页面内加载。
它采用 AGPL-3.0 许可证,基于 Astro、Tailwind、Svelte 和 Fastify 构建,并拥有一个供社区主题和插件交易的市场。实际的代理功能由独立的库——Ultraviolet 和 Scramjet——负责,我们稍后会详细介绍。
由于它是开源的,因此并不存在单一的“Nebula Proxy”。除了上游项目之外,还有数百个分支和部署版本,每个都由不同的人运营,拥有不同的域名,且当原有域名被封锁时,域名往往会发生变化。
2. Nebula,Slack 的覆盖网络工具
这是一款完全不同的软件,只是不幸与前文提到的项目名称相同。slackhq/nebula 是一款“专注于性能、简洁性和安全性的可扩展覆盖网络工具”,由 Slack 的 Nate Brown 和 Ryan Huber 开发。 它采用 MIT 许可证,并且 绝非代理——而是一种相互认证的点对点软件定义网络。
如果您是在搜索代理时偶然看到这篇文章,那么第八节正是为您准备的。这两个项目除了名字都有五个字母外,没有任何共同之处。
3. “Nebula 代理”作为通用营销术语
还有一类值得提及:许多商业代理供应商发表了关于“Nebula 代理”的文章,将其描述为一种具有独特属性的代理服务类别。据我们从实际源代码和代码库中了解,并不存在这样的技术类别。 这似乎是一个能带来流量的搜索词,因此有人专门撰写了相关页面来吸引流量。
作为一家撰写关于搜索词文章的代理服务商,请对本文保持同样的怀疑态度——但请务必核对文中的链接。本文中所有技术内容均指向源代码仓库,您可以自行查阅。
Nebula 的内部工作原理
了解其工作机制,既能解释它为何有效,也能说明它为何会失效。
基本原理
传统的代理服务器在网络层位于您的设备与互联网之间:您需要配置系统或浏览器,让流量通过它进行中转。Nebula 并非如此。Nebula 是一个 网站。
您在浏览器中打开 Nebula,输入目标网址。Nebula 的服务器会获取该目标页面,对其进行重写——使页面中的链接、脚本和请求都指向 Nebula 自身而非原始域名——然后将重写后的页面呈现给您。您的浏览器始终只与 Nebula 进行通信。 对于任何监视您流量的设备而言,您访问的只是一个网站。
这就是全部的诀窍,也是它能够绕过简单的基于域名的过滤器的原因。一个包含某社交网络域名黑名单的过滤器,永远不会在您的流量中看到该域名。
服务 worker,而非服务器端重写
真正的技术亮点在于代理库。其中最著名的 Ultraviolet 将自身描述为“一种用于规避互联网审查或在受控沙箱中访问网站的高级 Web 代理”,并且它遵循 AGPL-3.0 协议。
Ultraviolet 并非在服务器端重写所有内容,而是将一个 服务 worker 安装到你的浏览器中——这是一个位于网页与网络之间的脚本,它会拦截出站请求,并遵循 TompHTTP 规范。 当被代理的页面尝试加载图片、调用 API 或打开套接字时,服务 worker 会捕获该请求,并将其通过代理重新路由。
这一点至关重要,因为正是这种机制使得复杂的 JavaScript 应用程序才能正常运行。服务器端重写虽然能很好地处理静态 HTML,但一旦页面在运行时生成自己的请求(而每个现代网站都会这样做),这种机制就会失效。而在浏览器中进行拦截则能捕获这些请求。
Ultraviolet 即将退役
如果您阅读过较早的指南,这一点值得了解:Ultraviolet 自身的代码库中明确指出,它 已不再积极维护,并已被 Scramjet 取代。 Nebula 的当前文档中将 Ultraviolet 和 Scramjet 都列为后端选项。
一个不再维护的代理库确实令人担忧,这绝非吹毛求疵。这些库通过精确模拟浏览器行为来工作,而浏览器本身会不断变化。不再维护意味着故障会不断累积,且其中发现的任何安全问题都将长期存在。
为何这不是一个静态网站
该代码库明确指出,Nebula“不会部署在 GitHub Pages、Netlify、Vercel、GitLab Pages 或任何其他静态托管平台上”,并且在 Render 上也无法运行。 它需要一个真正的服务器进程——带 npm 或 pnpm 的 Node.js,或 Docker——以及一个数据库,普通使用可选 SQLite,而生产环境则推荐使用 PostgreSQL。
正是这一要求,才使得公共实例得以存在。大多数需要 Web 代理的用户并不想自行运行服务器,因此他们会使用他人的服务器。这也引出了真正关键的部分。
公共实例与自主托管
这两种模式虽然拥有相同的界面,但本质上截然不同。
公共实例
有人已在某个域名上部署了 Nebula 并将其对外开放。您访问该实例并使用它。免费、即时,无需任何技术知识。
该实例的运营商可以完整地查看您通过该实例发出的每一条请求。不仅是域名——而是所有内容。该代理按设计会对您的流量进行解密和重新加密;这就是它重写网页的方式。 每一个 URL、每一次表单提交、每一次在代理登录页面中输入的密码,都会以可读的形式经过他们的服务器。
你不知道他们是谁。通常你也无从知晓。这里没有合同,没有名副其实的隐私政策,没有管辖权,没有问责机制,而且他们即使行为不端也无需承担任何代价。 有些运营商只是将此作为业余爱好的青少年;有些在投放广告;还有些则在从事更恶劣的行为。
公共实例往往寿命很短。它们会被封锁、被关闭,或者耗尽托管额度。域名不断变更的模式是这种运营模式固有的特征。
自主托管
您可以在自己控制的托管环境中自行部署 Nebula。代码库中既记录了终端操作路径(Node、npm 或 pnpm、Git),也提供了 Docker 部署方案,其中 Koyeb 作为平台之一得到了明确支持。
现在信任问题已得到解决:唯一能读取您流量的人就是您自己。您掌控着域名和运行时间。当代理库发生变更时,您可以自行更新。
不过,这确实会产生实际成本。您需要一个运行环境和一个域名,这虽然是一笔小额但并非零的月费。 你需要对终端操作足够熟悉,才能进行部署和更新。而且你已经成为了运维者,这意味着如果你与他人共享该服务,你现在就掌控着他们的流量——这包含了对所有通过该服务传输的数据所应承担的全部责任。
诚恳的建议
如果你打算将 Nebula 用于任何不希望被陌生人阅读的内容,请自行托管,否则就不要使用它。没有中间立场。“大概没问题”并不是一种安全模型,而免费公共代理的运营商既没有理由赢得你的信任,也没有办法证明这一点。
Nebula 无法做到什么
本节旨在帮助大家避免产生错误的假设。
它无法让你保持匿名。 目标网站看到的是代理的地址,而不是你的地址,但代理运营商却能看到一切。你并没有消除一个观察者;你只是将一个你能识别的观察者替换成了一个你无法识别的观察者。
它不会像 VPN 那样对你的连接进行端到端加密。 你的浏览器与 Nebula 之间的连接可能是 HTTPS,而 Nebula 后续的连接也可能是 HTTPS,但 Nebula 自身作为中间节点处理的却是明文。 这并非缺陷——这是重写功能正常运作的必要条件——但这意味着其安全保障与人们的普遍认知大相径庭。
**它无法对受管理设备隐瞒任何信息。**这是关键问题,且普遍存在误解。 如果您使用的是学校或雇主提供的笔记本电脑,该组织可能已安装了监控软件、管理配置文件,或允许网络设备检查加密流量的证书。所有这些都在设备上或解密点上运行,无论是在代理介入之前还是之后。 对于屏幕录制、按键记录、浏览器扩展程序报告,或是安装了根证书的 TLS 检测防火墙,Web 代理都无能为力。许多人都是通过令人不快的经历才意识到这一点的。
它无法突破严格的过滤机制。 针对特定域名列表的封锁很容易被绕过。 现代过滤技术还包括类别分类、TLS 指纹识别、DNS 检查和流量分析,而已知的代理前端本身就是一种广为人知的被封锁类别。这就是为什么公共代理实例会不断轮换域名——因为它们在同一场竞赛中屡战屡败。
**这无法免除你已同意遵守的规则。**无论技术结果如何,绕过网络过滤通常都直接违反了《可接受使用政策》。学校和雇主将此视为行为问题,即使技术手段有效,后果也不会因此消失。
该方法在受保护的网站上无法可靠地起作用。 具有强大机器人检测机制的网站、采用数字版权管理(DRM)的流媒体平台、银行网站以及任何进行设备级检查的网站,往往会检测到重写代理,从而拒绝加载或导致页面加载异常。
Nebula 与其他替代方案的对比
不同的工具、不同的信任模型、不同的故障模式。
| 选项 | 谁可以读取您的流量 | 成本 | 是否隐藏于受管设备 | 典型用途 |
|---|
| Nebula,公有实例 | 未知运营商,全部 | 免费 | 否 | 日常解锁 |
| Nebula,自托管 | 您 | 托管 + 域名 | 否 | 个人访问 |
| 信誉良好的 VPN | 服务商(根据其政策) | 约 3–12 美元/月 | 否 | 隐私保护、地域切换 |
| Tor 浏览器 | 没有任何单一实体能同时看到两端 | 免费 | 否 | 强匿名性 |
| 浏览器代理扩展 | 扩展作者 | 免费–低价 | 无 | 便捷性 |
| 商业代理服务 | 服务商 | 约 $0.14/GB 起 | 无 | 自动化、数据抓取 |
表格解读
请注意整列都标注为“无”的这一列。**没有任何网络级工具能保护您免受运行在您自己设备上的软件的侵害。**如果设备处于受管状态,这才是需要考虑的问题,而上述任何选项都无法改变这一事实。
信誉良好的 VPN 才是与大多数人对 Nebula 的认知更接近的对比对象。它从设备端对所有数据进行加密,覆盖所有应用程序而非仅限于一个浏览器标签页,并且由一家拥有明确名称、受特定司法管辖且提供可查阅隐私政策的公司提供。 虽然需要付费,但你依然是在信任单一服务商——不过这家服务商有自己的利益要维护。
Tor 浏览器才是真正需要匿名时的严肃选择。其设计确保没有任何单个中继节点能将你的身份与访问内容关联起来,而且它是免费的。 不过它速度较慢,在网络中容易被识别,且在许多地方遭到封锁。
商业代理服务——即我们所处的领域——则是为完全不同的任务而设计的。 住宅代理和数据中心代理的存在,是为了让自动化系统能够从多个地址发起大量请求:价格监控、广告验证、市场调研、大规模数据抓取。它们按带宽计费,通过代码配置而非浏览器标签页进行设置,用它们来访问被封锁的网站,就像是租一辆卡车来搬一个书柜。 仅供参考,我们的住宅代理起价为 0.79 美元/GB,数据中心代理起价为 0.14 美元/GB (定价),而这些服务完全不符合学生在学校试图访问网站的需求。
值得了解的风险
这并非危言耸听,只是人们事后才发现的那些事情。
**凭证泄露是最严重的问题。**通过公共网络代理登录任何服务,都会将您的用户名和密码以可读形式交到运营商手中。无论是电子邮件、社交账号、学校门户,还是其他任何服务。如果您只能从本文中记住一点:切勿通过您未自行运行的代理实例登录任何账户。
**恶意分叉轻而易举。**该项目是开源的,这固然是好事,但也意味着任何人都可以分叉它,添加几行代码来记录表单提交内容,然后将其部署在看似友好的域名下。界面看起来完全不会有任何不同。你无法审计那些无法看到其运行情况的代码。
广告,甚至更糟。 免费实例的运行需要成本。有些通过广告盈利,有些则通过更具侵略性的注入内容牟利。代理服务器重写网页是其正常功能,因此向其中注入内容轻而易举。
无论如何,你的连接记录很可能被保留。 即使网络无法看到你在代理服务器上的具体操作,你所处的网络仍会记录你曾连接到该代理地址。在受监控的网络中,反复连接未列入白名单的陌生域名本身就是一种信号,而且往往比普通访问被封锁网站的尝试更能引起注意。
政策后果与技术成功与否无关。 学校和工作场所通常将蓄意绕过过滤视为纪律问题。工具运行得再完美,也完全不会影响这一结果。
**法律背景因地而异。**在大多数地方,使用代理完全合法。你通过代理进行的操作与其他任何行为一样受相同法律约束,而在某些国家,绕过过滤的工具本身就受到限制。这只是一般性观察,并非法律建议;如果这与你所处的具体情况相关,请咨询专业人士,而非仅依赖博客信息。
Slack 的 Nebula:同名覆盖网络
如果您是冲着基础设施软件来的,这就是您想要的。
Nebula 是一款由 Nate Brown 和 Ryan Huber 在 Slack 开发、并得到多位开发者贡献的 可扩展的覆盖网络工具,采用 MIT 许可证发布。它不是代理,也不用于解锁网站。
它的作用是让世界各地的设备能够通过一个私有、相互认证的网络进行通信,仿佛它们位于同一个局域网(LAN)中一样。它基于 Noise Protocol Framework 构建,采用 ECDH 密钥交换和 AES-256-GCM 加密算法,并支持在 Linux、macOS、Windows、iOS 和 Android 系统上运行。
架构原理
**灯塔(Lighthouses)**是具有固定、可路由地址的节点,其作用是帮助其他节点相互发现。它们支持 UDP 穿孔,使对等节点能够从大多数防火墙和 NAT 之后建立直接连接——这意味着流量以点对点方式传输,而非通过中央服务器中转,这与传统的 VPN 集中器不同。
证书用于验证每个节点的身份,并定义其在用户自定义组中的成员身份。这些组驱动着防火墙规则,从而控制哪些主机可以与哪些主机通信。访问控制是身份系统的一部分,而非事后附加的功能。
为何有必要澄清这一混淆
这两个项目面向的受众截然不同。Slack 的 Nebula 旨在通过安全的私有网络,连接不同云服务提供商和办公地点之间的服务器、容器及笔记本电脑。而作为 Web 代理的 Nebula 则是一个用于访问被封锁网站的浏览器页面。
搜索“Nebula proxy”会出现这两种结果,而且还有相当多的内容似乎没有注意到它们之间的区别。如果您正在为生产基础设施评估某个项目,那么上述代码库才是您需要的,而“proxy”这个词并不适用于它。
何时 Nebula 并非合适工具
这既不符合我们的利益,也偏离了主题——在某些常见情况下,需要完全不同的解决方案。
您需要隐私保护。 请使用信誉良好的 VPN 或 Tor 浏览器。公共网络代理只是将观察者转移到别处,而非消除其存在,而且会将其转移到一个更难追责的地方。
****你正在使用学校或工作设备。**如果设备本身受到监控,网络层上的任何措施都无济于事。现实可行的选择是使用自己的设备连接到自己的网络,或者请求解锁该网站——对于正当的研究需求,这种方法奏效的概率往往高于人们的预期。
你需要它能稳定运行。 公共实例会消失、被封锁或出现故障。如果某件事至关重要,请不要将日常工作建立在由陌生人运营的免费域名之上。
你想观看流媒体服务。 重写代理与数字版权管理(DRM)无法兼容。这种方法大多行不通,即使能行,体验也会很糟糕。
你正在进行任何自动化操作。 数据抓取、监控、大规模测试——基于浏览器的解锁工具完全不适合这些场景。这正是代理服务和无头浏览器的用武之地,而这也是我们产品真正能提供最佳解决方案的领域。
**你试图隐藏一些重要信息。**如果风险真实存在,由匿名运营商运营的免费网络代理几乎是最糟糕的选择。它将你的一切行为都集中到一个无法追责的节点上。
你只是想访问一个被网络无故屏蔽的网站。 这可以理解——这确实是绝大多数情况。如果可以的话,请自行架设服务器。如果无法做到,请使用公共实例,同时要充分意识到运营商能看到一切,并且切勿通过它登录任何账户。
大家还问
什么是 Nebula Proxy?
这是一个开源的 Web 代理前端——一个网站,它会为您加载其他网站,并在其自身页面内渲染这些内容,因此您的网络仅会显示您正在访问该代理。 其主项目是 GitHub 上的 NebulaServices/Nebula,采用 AGPL-3.0 许可证,既可以自行托管,也可以通过第三方运营的公共实例使用。
Nebula Proxy 安全吗?
如果自行托管,其安全性取决于您服务器的安全性。但在公共实例上,从实质意义上讲并不安全:运营商可以读取所有经过的数据,包括您在代理页面中输入的任何内容。切勿通过您未自行运行的实例登录账户。
Nebula Proxy 是免费的吗?
是的。它是一款遵循 AGPL-3.0 协议的开源软件,且公共实例通常可免费使用。自行部署的成本取决于您的托管和域名费用,因为它需要 Node 或 Docker 服务器以及数据库,而非静态托管。
Nebula Proxy 能否隐藏我的网络活动,不让学校察觉?
充其量只能部分隐藏。它可以躲过基于域名的过滤器,使其无法检测到您访问了哪些网站,但网络仍会记录您曾连接到代理的事实;对于受管设备上的监控软件、管理配置文件或 TLS 检查,它完全无能为力。此外,无论是否成功,绕过过滤器通常都属于违反可接受使用政策的行为。
Nebula Proxy 算 VPN 吗?
不是。VPN 会对来自你设备的流量进行加密,并覆盖所有应用程序。Nebula 是一个网站,它仅在单个浏览器标签页内对网页进行代理,并且会在中间对你的流量进行解密以便重写。机制不同,保障也不同。
从技术角度看,Nebula Proxy 是如何工作的?
它使用代理库——Ultraviolet 和 Scramjet——在您的浏览器中安装一个服务 worker,以拦截出站请求并将其重定向至代理服务器,遵循 TompHTTP 规范。 正是这种拦截机制,使得依赖大量 JavaScript 的网站能够正常运行,而不仅仅是静态页面。
Nebula Proxy 与 Slack 的 Nebula 有什么区别?
它们是名称相同但互不相关的项目。Slack 的 Nebula 是一个采用 MIT 许可证的点对点覆盖网络,通过灯塔、证书和 UDP 穿墙技术,在互联网上安全地连接设备。它并非代理,也与解锁网站无关。
为什么 Nebula Proxy 的链接会不断变化?
公共实例可能会被过滤器屏蔽、被主机关闭或被运营商弃用,因此当旧域名失效时,新域名便会出现。这是该模式固有的特性,并非异常现象。自行托管是获得稳定链接的唯一途径。
总结
Nebula Proxy 是一个设计精良的开源 Web 代理,它专注于一项特定且狭窄的功能:代表你加载网站,从而使你的网络仅能看到与 Nebula 之间的连接。 其工程实现确实引人入胜——正是通过服务 worker 在浏览器中拦截请求,才使其能够处理现代 JavaScript 应用程序,而不仅仅是静态页面——整个项目在 GitHub 上以 AGPL-3.0 许可证开放,代码清晰易读。
真正重要的决定并非是否使用 Nebula,而是你使用的是谁的实例。 如果自建服务器,唯一能读取您流量的人就是您自己,代价只是少量托管费用和一些终端操作。而在公共实例上,匿名运营商能看到您输入的每条请求和每组凭据,且无需承担任何责任。这两者绝非同一选择的两种版本。
此外,有必要明确该工具无法触及的范围。Web 代理作用于网络路径;而监控软件、管理配置文件和 TLS 检查则在设备端运行,无论使用何种代理、VPN 或匿名网络都无法改变这一点。如果你使用的是由他人管理的设备,这正是首先需要考虑的事实。
我们销售代理服务,但上述内容绝非为其做宣传。商业代理服务解决的是另一类问题——自动化系统从大量地址发起海量请求——而若仅为访问被封锁的网站,购买此类服务是错误的选择。说出这一点对我们毫无损失,而若向你提供相反的建议,只会让你白白浪费金钱。
请牢记两点:切勿通过您无法控制的代理实例登录任何账户;如果设备属于您的学校或雇主,那么网络层从来就不是决定成败的关键所在。