QuiteAFancyEmerald/InvisiProxy
GitHub: QuiteAFancyEmerald/InvisiProxy
一个用于绕过网络审查并保护浏览隐私的自托管 Web 代理服务。
Stars: 1454 | Forks: 5159
# InvisiProxy LTS (v6.x.x)
#### 前身为 Holy Unblocker LTS


[](https://hub.docker.com/r/quiteafancyemerald/InvisiProxy)
[](https://hub.docker.com/r/quiteafancyemerald/InvisiProxy)
[](https://hub.docker.com/r/quiteafancyemerald/holy-unblocker)
## 您可以通过给仓库点星来支持InvisiProxy!
本项目主要是一个概念验证,旨在提供理想的无客户端解决方案来绕过审查。一个很好的使用场景是,当您需要一个无客户端解决方案来使用 Tor 或尽量减少设备活动痕迹时。只需将本项目托管在任何域名上,即可获得一种无需在该设备上下载任何东西的 VPN 替代方案。作为一个安全的Web代理服务,它支持众多网站,同时频繁更新,并专注于易于自托管。InvisiProxy LTS 可与大量网站配合使用,包括 YouTube、ChatGPT、Discord、GeForce NOW 等等!
网站上还提供大量本地托管的游戏。
#### 自2020年以来拥有超过3000万用户。非常感谢大家的支持,我从未想象过Web代理社区会变得如此庞大。
#### 当前分支:Latest(最新)
分支类型
- Latest(master;为 FOSS 和 SEO 构建) - Beta(待定更改;可能破坏功能的更改) - Production(v4, v5, v6;InvisiProxy LTS 的稳定版本。针对生产环境自托管的更改;最大程度的过滤规避和请求处理) #### 考虑为自托管切换到生产分支! 如果您希望自托管此项目,请查看自部署选项。无法使用任何免费选项部署?请查看 Railway 或寻找便宜的付费 VPS 托管解决方案。如果您不想自托管,请加入 Discord 获取更多官方实例链接,这些链接会经常补充库存。 **务必加入 TitaniumNetwork 的 Discord 以获取更多官方站点链接:** https://discord.gg/unblock| **支持的网站** | **功能** | | ----------------------- | --------------------------------------------------------------------------------------------------- | | Youtube | 内置多种开源Web代理,专注于速度和/或安全性 | | Reddit | 提供源代码随机化和 DOM 伪装功能,有效规避主要过滤器,并对代理全局进行随机化 | | Discord | 使用设置菜单自定义标签页标题和图标,以提高浏览历史的隐蔽性 | | Instagram | 在所有网站浏览时支持广告拦截,并在官方服务器上提供低延迟 DNS | | Reddit | 在设置菜单中支持 SOCKS5 和 Tor 洋葱路由。在任何浏览器中使用 Tor/洋葱站点! | | GeForce NOW | 游戏库包含数量适中的优质游戏和开源模拟器项目 | | ChatGPT | 隐藏本地浏览历史,防止标签页泄露,网络流量被混淆! | | Spotify | 通过切换区域或启用 Tor 来绕过区域代理封锁 | | 以及几乎所有网站! | 专为高强度生产负载和易于设置而设计 |
## 部署 InvisiProxy
### 免费部署
[](https://app.koyeb.com/deploy?name=InvisiProxy&type=git&repository=QuiteAFancyEmerald%2FInvisiProxy&branch=v6.9.8_production&builder=dockerfile&ports=8080%3Bhttp%3B%2F)
[](https://cloud.oracle.com/resourcemanager/stacks/create?zipUrl=https://github.com/BinBashBanana/deploy-buttons/archive/refs/heads/main.zip)
其他免费托管源
[](https://render.com/deploy?repo=https://github.com/QuiteAFancyEmerald/InvisiProxy) [](https://fly.io/launch?repo=https://github.com/QuiteAFancyEmerald/InvisiProxy)设置说明
- 将此仓库复刻(并点星!)到您的 GitHub 账户 - 前往官方 Codespaces 网站(确保您已有 GitHub 账户) - 选择 **New Codespaces** 并在您的账户中查找 _[USERNAME]/InvisiProxy_ - 确保分支设置为 `master`,开发容器配置设置为 **InvisiProxy LTS** - 选择 **Create Codespace** 并允许容器设置 - 在终端中输入 `npm run fresh-install` 和 `npm start` - 在应用弹出窗口中点击"Make public",然后通过端口选项卡访问部署的网站。
为简单起见,您可以加入 TN Discord 频道 discord.gg/unblock 并请求镜像站点链接(这些链接会补充库存并解除封锁)。
### 托管
如果您希望自托管,则需要一个 VPS 或托管提供商:
- https://docs.titaniumnetwork.org/guides/vps-hosting/
- https://github.com/QuiteAFancyEmerald/InvisiProxy#deploy-InvisiProxy
- https://docs.titaniumnetwork.org/guides/dns-setup/
### 依赖项
然后您需要设置 git、nginx(或 caddy)和 Node.js。以下是适用于 Ubuntu LTS 的示例:
```
sudo apt update
sudo apt upgrade
sudo apt install curl git nginx
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm install 20
nvm use 20
```
https://github.com/nvm-sh/nvm
https://docs.titaniumnetwork.org/guides/nginx/
### Tor 支持(可选)
https://github.com/QuiteAFancyEmerald/InvisiProxy#toronionsocks5-routing-setup
### 配置 InvisiProxy
最重要的选项是 `production` 以及混淆和 DOM 伪装技术。
然后根据需要进行配置:https://github.com/QuiteAFancyEmerald/InvisiProxy#configuration
### 克隆并运行 InvisiProxy
然后运行相应的进程;如果您在配置中将 `production` 设置为 `true`,pm2 将自动启用,并使用我们自己的工作器/缓存系统。
```
git clone https://github.com/QuiteAFancyEmerald/InvisiProxy.git
cd InvisiProxy
npm run fresh-start
```
然后,当然,如果您使用了 NGINX 或 caddy,请重新启动/重新加载它
```
sudo systemctl restart nginx
sudo systemctl restart tor
```
自托管资源:
- https://github.com/nvm-sh/nvm
- https://docs.titaniumnetwork.org/guides/nginx/
- https://docs.titaniumnetwork.org/guides/vps-hosting/
- https://docs.titaniumnetwork.org/guides/dns-setup/
### 配置
#### 服务器配置设置
代理启动时的默认端口是 `http://localhost:8080`。您可以在 `./ecosystem.config.js` 中根据需要更改端口和其他生产指标。
Rammerhead 的默认端口是 `3000`。您可以在此处更改:这里。
所有其他用于源代码随机化、自动压缩等的本地化更改都位于 `./config.json` 中。
**config.json**
- `minifyScripts`:启动服务器时自动压缩相应的静态资源。
- `randomizeIdentifiers`:启用 Ultraviolet 的实验性代理全局随机化。这降低了 UV 被任何基于扩展的过滤器检测到的几率。
- `production`:为服务器托管使用预配置的生产设置。自动设置缓存控制、Rammerhead 的会话作业和源代码重写。
- `disguiseFiles`:启用 DOM 伪装,混淆 InvisiLTS 的真实内容获取。这是通过伪装请求、解压缩然后重建 DOM 树来实现的。
- `usingSEO`:启用源代码随机化,通过交换 `./src/data.json` 中指定的数据块来随机化源代码。对于掩盖会自动标记或封锁 InvisiProxy LTS 的关键词以及防止源代码封锁非常有用。
#### Tor/Onion/SOCKS5 路由设置
您需要设置 Tor(无需 GUI/有 GUI 也可以。如果有 GUI,将端口 9050 替换为 9150)才能使洋葱路由设置正常工作!
只需使用此指南托管 Tor:https://tb-manual.torproject.org/installation/
替代指南(用于 CLI):https://community.torproject.org/onion-services/setup/install/
如果您在使用 Ubuntu 的 VPS 上托管 InvisiProxy LTS,请考虑将 Tor 附加到 systemctl 以便更轻松地进行生产管理。一旦 Tor 在 Linux 或 Windows 上启动并运行,当用户通过设置菜单启用它时,它将自动与 InvisiProxy LTS 配合工作。
如果您希望使用自定义的 HTTP/HTTPS/SOCKS5 代理来路由 Scramjet 和 Ultraviolet 的所有流量,请在 `./views/assets/js/register-sw.js.` 中处理。使用相应的协议和地址修改 `proxyUrl`。这是通过 Wisp 的代理选项完成的。您可以根据需要更改大小写。
```
proxyUrl = {
tor: 'socks5h://localhost:9050',
eu: 'socks5h://localhost:7000',
jp: 'socks5h://localhost:7001',
}
```
#### 代理配置
调整通过设置菜单分配的任何Web代理相关设置的主要位置是 `./views/assets/js/register-sw.js`。您可以在此处修改本地通过 cookie 设置的传输选项,交换 SOCKS5 代理,更改洋葱路由端口,指定黑名单等。
- `stockSW`:Ultraviolet 的默认服务工作者配置文件。然而,对于 InvisiProxy,广告拦截是自动启用的,因此默认情况下不使用此项。
- `blacklistSW`:一个修改版的 Ultraviolet,允许域名黑名单和广告拦截。
- `proxyUrl`:指定一个 SOCKS5/HTTPS/HTTP 协议 URL,默认为默认的 Tor 代理端口。这可以与任何有效的端口或 SOCK5 代理交换。这是通过 epoxy 和 libcurl 的代理选项完成的。
- `transports`:指定要通过 Bare-Mux 交换并利用 Wisp 的任何提供端口。
- `wispUrl`:修改 Wisp 的路径名或 URL 处理
- `defaultMode`:指定全局使用的默认传输(用户仍然可以通过设置菜单交换)
- `ScramjetController`:此构造函数允许您动态交换 Scramjet 使用的前缀并指定文件位置。注意,更改文件名时可能需要编辑 `./views/scram/scramjet.sw`。
#### 客户端导航配置
任何客户端导航脚本的主要位置是 `./views/assets/js/common.js`。此文件主要用于 Omnibox(搜索引擎)功能、交换代理选项和链接游戏。
- `getDomain`:此常量用于指定将 URL 附加到 Omnibox 时要删除的任何子域名。
- `goFrame`:此常量指定 InvisiProxy LTS 使用的隐形框架
- `sx`:此常量指定当用户输入非 URL 内容时代理的搜索引擎
- `search/uvUrl/sjUrl`:这些函数指定并解析用于提交 URL 的查询
- `RammerheadEncode:`:此常量是 Rammerhead 解析和查询的依赖项
- `urlHandler/asyncUrlHandler`:用于为 goProx 对象设置函数。
- `goProx`:此常量允许为特定代理、游戏或需要通过Web代理访问的链接映射 URL 处理。
```
const goProx = Object.freeze({
ultraviolet: urlHandler(uvUrl),
scramjet: urlHandler(sjUrl),
rammerhead: asyncUrlHandler(
async (url) => location.origin + (await RammerheadEncode(search(url)))
),
// `location.protocol + "//" + getDomain()` more like `location.origin`
examplepath: urlHandler(location.protocol + `//c.${getDomain()}/example/`),
examplesubdomain: urlHandler(location.protocol + '//c.' + getDomain()),
example: urlHandler(sjUrl('https://example.com')),
});
```
- `prSet`:使用 goProx 附加事件监听器到任何需要的按钮或输入框
```
// prSet function code here....
prSet('pr-uv', 'ultraviolet');
prSet('pr-sj', 'scramjet');
prSet('pr-rh', 'rammerhead');
prSet('pr-yt', 'youtube');
prSet('pr-example', 'example');
```
- `huLinks/navLists`:自动获取 `./views/assets/json` 中声明的路径,并根据页面和用法进行附加。这用于隐藏会导致过滤器封锁的链接,并为添加游戏创建更简便的系统。
#### 游戏管理
如上所述,所有需要附加到页面的游戏链接(包括图像和描述)都通过 `./views/assets/json` 中的导航文件管理。
在此处下载最新版本:这里,并将其解压到名为 `/views/archive` 的文件夹中。
- `views/archive/g`:包含任何本地或外部 HTML5/网页游戏。
- `views/archive/gfiles/flash`:包含 Ruffle(一个 Adobe Flash 模拟器)以及链接到外部 CDN 的 Flash 游戏集合。
- `views/archive/gfiles/rarch`:包含 webretro,这是一个将 RetroArch 移植到 WASM 的项目。支持 GBA、N64 等多种系统;**ROM 不包含在内**。
## 结构
网页
### 结构信息 - `/views/`:InvisiProxy 的实际站点基础在此处,静态资源在此提供服务。 - `/src/`:用于未来实现混淆和关键词移除功能。 #### `/views/` 详情 - `/dist/` 用于存放压缩后的文件。构建时创建。 - `/pages/` 用于存放站点的 HTML 文件。 - `/assets/` 用于存放各种 CSS、JS、图像和 JSON 文件。 - `/scram/` 包含相应的本地 Scramjet 实现。某些文件会被 node 模块覆盖。 - `/uv/` 包含 UV 实现。 #### `/views/assets/js/` 中的脚本 - `card.js` 为欢迎屏幕上显示的框卡片添加美观的视觉效果。 - `common.js` 在所有页面上使用,使大部分站点功能(如自动补全)能够运行。 - `csel.js` 管理设置菜单、Omnibox 功能和其他附加功能。 - `loader.js` 用作 DOM 伪装的资源。 - `register-sw.js` 创建并管理允许 Ultraviolet 运行的服务工作者,并使用 bare 传输。
- `@` 和 `www.example.com` 用于 InvisiProxy LTS。
- `a.example.com` 用于其他实例,如 Libreddit、Invidious 或网页移植的游戏,具体取决于站点维护者的需求。
如前所述,InvisiProxy 本地托管,开箱即用支持 Scramjet、Ultraviolet 和 Rammerhead。无需外部实例。
#### 域名步骤
- 如果您希望获取高级域名(顶级域名),请使用 Porkbun,它以惊人的价格提供域名。例如,一个 `.org` 域名第一年通常只需 5 美元左右。
#### Cloudflare 步骤
- 使用 Cloudflare(创建一个账户),添加您的站点,然后将您的各种 DNS 目标添加到 Cloudflare。确保添加 Cloudflare 的 Nameservers(添加站点时稍后会提供)。
确保它们是 CNAME 记录,A 记录也可以使用,并尝试遵循此结构:
**类型 | 名称 | 目标**
`A | @ | 此处填写 VPS IP`
`A | www | 此处填写 VPS IP`
`A | a | 此处填写 VPS IP`
确保强制使用 HTTPS,并将 SSL 设置为 Flexible(如果您不使用 LetsEncrypt)。否则,您可以将 SSL 设置为 Full。
#### 工作空间配置
如果您有自己的设备,建议使用 Visual Studio Code。这几乎是您能找到的最佳选择,但当然这只是个人意见。同时确保您的机器上安装了 Node.JS。
不会太深入这部分内容,但首先复刻此仓库。然后通过适用于您操作系统的某种终端将其本地克隆。确保导航到您希望设置此项目的文件夹。
```
git clone https://github.com/QuiteAFancyEmerald/InvisiProxy.git
cd InvisiProxy
npm run fresh-install
# 如果您希望启动该项目
npm start
# 用于测试端点和错误
npm run test
```
现在只需在 VSC 中添加您克隆此仓库的文件夹。然后运行 `npm install`。我建议,如果您打算在 GitHub 上公开发布,请在根目录中添加一个 `.gitignore` 文件,并包含以下排除项:
```
node_modules
```
现在您已设置好工作空间环境。要部署您刚刚创建的工作空间,您需要根据托管提供商查找相关信息。
对于可以在学校电脑和/或 Chromebook 上使用的在线 IDE,请使用 GitPod。基本上相当于 Visual Studio Code,但支持浏览器内操作。
- 创建账户:`https://gitpod.io/`
- 复刻此仓库并输入此 URL 以设置您的工作空间:`https://gitpod.io#https://github.com/YourNameHere/InvisiProxy/`
使用相同的步骤,在您的仓库中运行 `npm install`,并在根目录中添加一个 `.gitignore` 文件,指定排除 `node_modules`。
## 详细常见问题
快速常见问题
#### 在哪里可以找到此仓库的游戏?(404 错误等) 由于盗版问题、大小等原因,此内容已移至 这里。公开版本中不包含 EmuLibrary。 **为什么我所在的网站无法正常工作或出现验证码错误?** 不幸的是,当前所有代理对验证码的支持都不稳定。主要由 Scramjet 支持。因此,某些网站可能无法与任何代理站点配合工作。 **我遇到 502 错误。该怎么办?** 发生这种情况时,您可以切换站点以修复错误,或者稍等片刻。有时清除缓存会有所帮助。 如果您仍有任何疑问,请随时在链接的 Discord 中提出。旧的结束语(原始 - 2022)
这不是最好的公告,抱歉。经过深思熟虑和严重犹豫,我决定关闭 Holy Unblocker 并离开 TN。这只是几个月来我一直非常纠结的事情,因此去年更新很少,并且出现了巨大的间隔。我只是不想放弃一个我充满热情、花费时间投入的项目,同时在这里结识了很棒的朋友和优秀的开发者。我可以永远说下去这些人是谁,但我就说这么多。他们知道他们是谁 :D 主要的想法转变是我现在终于结束了,原因有:1)缺乏动力 2)社区在某些时候并非最棒、并非最友善(必须在这里说出来)3)HU/TN 作为项目的前景看起来不太好。 有些事情我会保密,因为除非有更多理由,否则这个选择背后还有更多信息。这里的好朋友们会知道几个月来我一直在为这个选择感到非常有压力。此外,无论原因如何,一个好的动力是事实是我很快就要毕业了。 未来我可能会继续/回到这个项目,或者只将其保留在 GitHub 上。我留在此处是因为即使现在我仍在怀疑这个改变。但就目前而言,我会查看其他代理网站,如 Incognito(Duce 确实非常频繁地进行大量更新,他是 Ultraviolet 的创建者/开发者,所以给他一些支持吧):yayy_hopi: 也查看他的 Patreon!对于当前的 HU 赞助者,您下个月不会被收费,HU 的 Patreon 将被存档,所以请前往 Duce 的 Patreon,这样他可以为 Incognito 购买更多域名。 带着爱 <3 Emerald :HuTaoHype:标签:MITM代理, Tor支持, Web服务, 匿名网络, 安全合规, 安全浏览, 审查绕过, 容器化部署, 开源框架, 持续集成, 无客户端, 流量加密, 游戏托管, 网络代理, 网络安全, 自定义脚本, 自托管, 请求拦截, 负责任AI, 隐私保护