InvisiProxy LTS (formerly Holy Unblocker LTS) is an experimental web proxy service that can bypass web filters or "blockers" regardless of whether the method of censorship is client-side or network-based. This includes the ability to bypass content blockers from governments, chrome extensions, localized client firewalls, and network-related filters. The project even allows the ability to browse Tor/Onion sites in any browser (even Chromium) all through a website!
This project serves mostly as a proof of concept for the ideal clientless solution to bypassing censorship. A good use case of this project would be if you ever needed a method to use Tor, swap regions when browsing (or use an external proxy), browse websites without making accounts (reduces fingerprinting), bypass adblocking, and/or leave minimal traces of device activity. Simply host this project on any domain and have an alternative solution to a VPN without needing to download anything on said device. Being a secure web proxy service, it supports numerous sites while being updated frequently and concentrating on being easy to self-host. InvisiProxy LTS works with a large number of sites, including YouTube, Gemini, ChatGPT, Discord, GeForce NOW and more! This project also features good amount of exclusive features compared to other web proxies in terms of bypassing web filters (DOM Masquerading, Font Obfuscation, Global Mangling and Source Randomization) and global censorship from countries. Current countries supported are China (GFW) and Russia.
Over 30M+ users since 2020. Thank you so much for the support I could have never imagined how massive the web proxy community has become.
Branch Types
- Latest (master; built for FOSS and SEO)
- Beta (pending changes; changes that may break things)
- Production (v4, v5, v6; stable version of InvisiProxy LTS. Changes for self hosting in production settings; max filtering evasion and request handling)
View the self-deployment options if you wish to self host this project. Can't deploy using any of the free options? Check out Koyeb or look into cheap, paid VPS hosting solutions. If you don't wish to self-host please click on the Mirror Links Menu on InvisiProxy.
Be sure to join TitaniumNetwork's Discord for more official site links: https://discord.gg/unblock
Caution
If you are going to self-host InvisiProxy LTS please switch to the PRODUCTION branch for filter evasion features enabled automatically. The master branch will feature work-in-progress changes that are not ready for self hosting. If you wish to contribute to this project however please PR to the master branch.
Tip
InvisiProxy LTS is optimized for self-hosting to provide you with maximum privacy control! Fork this repository and consider starring. You can self-host using either free or paid deployment options, or set it up on a dedicated instance (VPS) for enhanced performance.
| Supported Sites | Features |
|---|---|
| Youtube | Built-in variety of open source web proxies with both a focus on speed and/or security |
| Features Source Randomization, Font Obfuscation, Global Mangling and DOM Masquerading to circumvent major filters effectively along with randomizations to proxy globals | |
| Discord | Tab title + icon customization using the Settings Menu for improved browsing history stealth |
| Fingerprint removal and adblocking support across all websites while surfing and low latency DNS on official servers | |
| SOCKS5 and Onion routing support with Tor within the Settings Menu. Use Tor/Onion sites in any browser! | |
| GeForce NOW | Exclusive features compared to other web proxies in terms of bypassing web filters and global censorship from countries. |
| ChatGPT | Local browsing history hidden, tab leak prevention and network traffic is obscured! |
| Spotify | Bypass regional proxy blocks by swapping regions or enabling Tor |
| And essentially most sites! | Built for intensive production loads and ease of setup |
Replit is no longer free and Heroku has a set policy against web proxies. Try GitHub Codespaces or Gitpod instead for development on the cloud OR Koyeb for free hosting.
Setup Instructions
- Fork (and star!) this repository to your GitHub account
- Head to the official Codespaces website (ensure you have a GitHub account already made)
- Select New Codespaces and look for [USERNAME]/InvisiProxy on your account
- Ensure the branch is set to
masterand the dev container configuration is set to InvisiProxy LTS - Select Create Codespace and allow the container to setup
- Type
pnpm run fresh-installandpnpm startin the terminal - Click "Make public" on the application popup, then access the deployed website via the ports tab.
- Setup
It is highly recommended you switch branches via your IDE to a production released branch. Often the master branch contains unstable or WIP changes.|
Either use the button above to deploy to the deployment options above or type the commands below on a dedicated server
THIS PROJECT IS MADE TO SUPPORT NGINX; NOT CADDY.
Please ensure you are using Node 26.x as well. git and curl are required dependencies:
git clone https://github.com/InvisiProxy/InvisiProxyLTS.git
cd InvisiProxyLTS
# Edit config.js and set production to true if you want to use pm2 (Allows for easier VPS hosting)
pnpm install
pnpm fetch-keywords
pnpm fetch-adblock
pnpm build
pnpm start
# pm2 daemon utilization (rebuilds and restarts every 6 hours to re-randomize obfuscation,
# and refetches the adblock list and keywords weekly before rebuilding)
pm2 start ecosystem.config.cjs
# Or on subsequent uses...
pnpm restart
# For killing any production processes made with pm2
pnpm run kill
# If you encounter any build errors...
pnpm run build
# If you encounter any service errors...
pnpm run testThis website is hosted locally with Scramjet, Wisp, Merp Obfuscation, EpoxyTransport, and LibcurlTransport built-in.
For security reasons when hosting with a reverse proxy PLEASE use NGINX not Caddy. This is due to wispurr using loopbacks. If using Caddy disable this feature or adjust your default Caddy config.
You will need Node.js 20.x, curl and git installed; below is an example for Debian/Ubuntu setup.
Details
For simplicity sake you can join the TN discord at discord.gg/unblock and request for mirror site links (that are restocked and unblocked).
If you wish to self-host however you will first need a VPS or hosting provider:
- https://docs.titaniumnetwork.org/guides/vps-hosting/
- https://github.com/InvisiProxy/InvisiProxyLTS#deploy-InvisiProxy
- https://docs.titaniumnetwork.org/guides/dns-setup/
You will then need to setup git, musl, nginx (or caddy) and Node.js. Here is an example for Ubuntu LTS:
sudo apt update
sudo apt upgrade
sudo apt install curl git nginx musl
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"
# 26 or latest
nvm install 26
nvm use 26
https://github.com/nvm-sh/nvm https://docs.titaniumnetwork.org/guides/nginx/
https://github.com/InvisiProxy/InvisiProxyLTS#toronionsocks5-routing-setup
Most important options are production along with the obfuscation and DOM masquerading techniques.
From there just configure as needed: https://github.com/InvisiProxy/InvisiProxyLTS#configuration
Then run the respective process; if you have production set to true in the configuration pm2 will be automatically enabled with our own workers/cache system.
git clone https://github.com/InvisiProxy/InvisiProxyLTS.git
cd InvisiProxy
pnpm run fresh-start
Then of course if you used NGINX or caddy please restart/reload it
sudo systemctl restart nginx
sudo systemctl restart tor
Resources for self-hosting:
- 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/
The default PORT for the proxy when started is http://localhost:8080. You can change the PORT and other production metrics if needed in ./ecosystem.config.js.
Every other localized changes for source randomization, auto-minify, etc. are located in ./config.json.
config.json
minifyScripts: Automatically minify respective static assets upon starting the server.randomizeIdentifiers: Enable experimental proxy global randomization for Ultraviolet. This reduces the chances of UV being detected by any extension based filters.production: Utilize a pre-configured production setup for server hosting. Automatically has cache control and source rewrites setup.disguiseFiles: Enable DOM masquerading which obfuscates real the real content fetches for InvisiLTS. This is done through disguising requests, decompressing and then reconstructing the DOM tree.usingSEO: Serve the site as plain, crawlable pages for search engines and reviewers. This disables Source Randomization, DOM masquerading, keyword masking and the challenge page, so/serves the readable Overview page and all content is sent as normal HTML. Leave itfalseto keep those protections onverbose: Enables compiling and building messages to see progress and possible issues while compiling.mirrorLinksFile: Server-only file used by the Links page dispenser, defaulting toprivate/mirror-links.txt. Relative paths are resolved from the project root; absolute paths are also supported. Use one HTTP(S) URL per line and keep the file outsideviews/so it is not publicly served. Restart the server after changing this setting.adsFile: Server-only file with each domain's ad setup, defaulting toprivate/ads.json. Copyprivate/ads.example.jsonto start; edits are picked up without a restart. See ADVERTISING.md.geoLanguage: Enables automatic language selection using Cloudflare'sCF-IPCountryheader. Only enable this behind Cloudflare, since the header can otherwise be set by anyone. Countries are listed per language underlanguage.countriesin each./locales/*.yamlfile.singleLanguage: Whentrue, only the language set inlanguageis built and every visitor gets it, with the Language setting hidden. Useful for Docker or other deployments that only need one language, since builds are faster and smaller. Defaults tofalse.language: The language to build whensingleLanguageis on, matching a file in./locales/(e.g.enforen.yaml). Defaults toen. For Docker, set this inconfig.jsonbefore runningdocker buildordocker compose build, since languages are chosen at build time.patreon: Enables the Patreon proxy region and turns off all ads. Defaults tofalse.dlpcc: Runs the DLPCC WebRTC relay. Defaults tofalse.dlpccNginx: Set totruewhen NGINX owns port 443 and splits TURN from page loads with the DLPCC stream config. Leavefalsewhen Node serves visitors directly. Defaults tofalse.
InvisiProxy LTS is translated on Crowdin, and anyone can help without needing to touch code. Join the project, choose a language and start translating. Finished translations are synced into ./locales/ automatically.
See locales/README.md for the translation rules (placeholders, tags and masked terms). If your language isn't listed on Crowdin, open an issue or ask in the Discord.
You need to setup Tor (no GUI need/GUI is alright. With GUI replace port 9050 with 9150) in order for the Onion Routing setting to work!
Simply host Tor using this guide: https://tb-manual.torproject.org/installation/
Alternative Guide (for CLI): https://community.torproject.org/onion-services/setup/install/
If you are hosting InvisiProxy LTS on a VPS utilizing Ubuntu consider attaching Tor to systemctl for easier production management. Once Tor is up and running on either Linux or Windows it will work automatically with InvisiProxy LTS when enabled by the user via the Settings menu.
Users can also set their own Wisp server in Proxy Preferences.
If you wish to use a custom HTTP/HTTPS/SOCKS5 proxy to route traffic for Scramjet this is handled on the server in ./src/server/wisp.ts.
export const wispProxies = {
tor: 'socks5h://127.0.0.1:9050',
eu: 'socks5h://127.0.0.1:7000',
jp: 'socks5h://127.0.0.1:7001',
patreon: process.env.PATREON_PROXY || 'socks5h://127.0.0.1:7002',
};The Patreon region's proxy is read from PATREON_PROXY, so its address can stay out of the repo. Environment variables can go in a .env file in the project root, which the server loads on start (variables already set in the environment win) and git ignores:
PATREON_PROXY=socks5h://203.0.113.5:1080Proxied pages normally can't use WebRTC through the proxy: Scramjet and Wisp tunnel fetch, XHR and WebSockets, but a page's RTCPeerConnection sends its media over UDP straight from the browser. DLPCC is a TURN relay that shares the site's own port, so game streaming (GeForce NOW), voice and video calls keep working on networks that block UDP.
It only runs when dlpcc is true in config.json. Since it relays all of a visitor's call and stream media through your server, it is best kept to deployments you control, such as private instances.
{
"dlpcc": true
}Without NGINX in front, nothing else is needed: the relay shares the server's port and visitors get TURN on the host and port they used.
With NGINX owning 443 (the recommended production setup), NGINX splits TURN from page loads instead:
- Set
"dlpccNginx": trueinconfig.json. - Set up the NGINX stream config from the DLPCC nginx guide. The relay listens on
127.0.0.1:3478. - Open UDP
49152-65535in and out for relayed media.
Behind Cloudflare or another CDN, the CDN only forwards web traffic, so TURN needs its own DNS-only (grey cloud) name pointing straight at the server, with a normal certificate (Let's Encrypt, not a CDN origin certificate). Set DLPCC_PUBLIC_HOST=turn.* and every mirror gets its own TURN name: a visitor on www.mirror2.net gets turn.mirror2.net, one on example.com gets turn.example.com. Add a turn. record for each mirror. A plain value such as DLPCC_PUBLIC_HOST=turn.example.com sends every mirror to that one name instead. Note that a DNS-only record reveals the server's IP.
Every other relay option can be set with a DLPCC_* environment variable, such as DLPCC_RELAY_IP for the server's public IPv4 when it sits behind NAT, DLPCC_PUBLIC_PORT=443 when TURN is reached on a different port than the site, or DLPCC_RATE_LIMIT. See the DLPCC options for the full list.
Services that refuse datacenter IPs, as GeForce NOW can, need the relayed media to leave from a residential IP instead. Set DLPCC_UPSTREAM_PROXY to a SOCKS5 proxy that supports UDP and every relayed stream goes out through it. Point PATREON_PROXY at the same proxy, so a site's own requests and its media come from one IP. Both can go in .env:
DLPCC_UPSTREAM_PROXY=socks5://203.0.113.5:1080
PATREON_PROXY=socks5h://203.0.113.5:1080Add user:pass@ before the host if the proxy uses a login. For an IP whitelist, whitelist the server's IP. Most SOCKS5 proxies only carry TCP; when one can't do UDP, the relay logs an upstream proxy error saying UDP ASSOCIATE was refused.
- Anyone who can open the site can get relay credentials, so everyone with the domain shares its bandwidth (a game stream is roughly 15 to 50 Mbps). Keep proxy sites with this feature enabled private.
- The relay refuses to reach private networks, and credentials are rate limited per visitor. Behind NGINX the visitor's address is read from
X-Real-IP.
The primary location for tweaking any web proxy related settings assigned via the Settings menu is ./views/assets/js/register-sw.js. Here you can modify the provided transport options set locally via a cookie, swap out SOCKS5 proxies, change Onion routing ports, specify a blacklist, and more.
The primary location for any client side navigation scripts is ./views/assets/js/common.js. This file is primary used for Omnibox (Search Engine) functionality, swapping proxy options and other client settings.
Web Pages
/views/: The physical site base of InvisiProxy goes here where static assets are served./src/: For future implementation of obfuscation and keyword removing features.
/dist/is used for minfied files. Created on build./pages/is used for the HTML for the site./assets/is used for storing various CSS, JS, image, and JSON files./scram/contains the respective local Scramjet implementation. Some files are overridden by the node module./uv/contains the UV implementation.
card.jsadds a fancy visual effect to the box cards displayed on the welcome screen.common.jsis used on all pages and allows most site features to function such as autocomplete.csel.jsmanages the settings menu, omnibox function and other additional features.loader.jsis used as an asset for DOM masquerading.register-sw.jscreates and manages service workers that allow Ultraviolet to function, and also uses bare transport.
This is our nonexhaustive todo list for InvisiProxy LTS.
You will first want to host your proxies locally or externally.
- Synteq ( Current Hosting Provider)
- Greencloud (Paid)
- Oracle Cloud (Free, Paid, Dedicated)
- Azure (Free and Paid)
Out of the list of hosting providers Dedipath and Azure rank first as a preference. You may also self-host.
After you have selected a decent VPS, use Cloudflare for the DNS records for both the site and the subdomains for the proxies.
This is an example of DNS records. Self-hosting will require A records preferably.

@andwww.example.comare being used for InvisiProxy LTS.a.example.comis being used for other instances like Libreddit or Invidious depending on what the site maintainer needs.
As stated previously, InvisiProxy is hosted locally with Scramjet and Ultraviolet out of the box. No need for external instances.
- If you prefer to obtain premium domains (TLDs) then use Porkbun, which offers domains for amazing prices. Literally a
.orgdomain normally costs around $5 first year.
- Use Cloudflare (make an account), add your site and then add your various DNS targets to Cloudflare. Make sure you add Cloudflare's Nameservers which will be given later when you are adding your site.
Make sure they are CNAME although A records also work and try to follow this structure:
Type | Name | Target
A | @ | VPS IP GOES HERE
A | www | VPS IP GOES HERE
A | a | VPS IP GOES HERE
Make sure HTTPS is forced and have SSL set to Flexible (if you don't use LetsEncrypt). Otherwise you can have SSL set to Full.
Preferably if you have your own device use Visual Studio Code. Pretty much the best option you can get but obviously this is an opinion. Also make sure you have Node.JS installed on your machine.
Not going to go too in depth with this part but first fork this repository. The clone it locally through a Terminal of some sort depending on what OS you are on. Make sure you navigate to the folder you want to set this up in.
git clone https://github.com/InvisiProxy/InvisiProxyLTS.git
cd InvisiProxy
pnpm run fresh-install
# If you wish to start the project
pnpm start
# For testing endpoints and errors
pnpm run test
Now simply add the folder you cloned this repo in in VSC. Then run pnpm install. I recommend that if you are releasing this publically on GitHub that you add a .gitignore in your root directory with the following exclusions:
node_modules
Now you have your following workspace environment setup. To deploy the following workspace you just created you will need to look up depending on your hosting provider.
For an online IDE that you can use on your school computer and/or chromebook use GitPod. Basically the equivalent of Visual Studio Code but with in-browser support.
- Make an account:
https://gitpod.io/ - Fork this repo and enter in this URL to setup your workspace:
https://gitpod.io#https://github.com/YourNameHere/InvisiProxy/
Use the same steps above by running pnpm install in your repository and adding a .gitignore in your root directory specifying to exclude node_modules.
Quick FAQ
Please read over here.
Why is the site I am on not working correctly or having CAPTCHA errors?
Captcha support is spotty on all of the current proxies sadly. It is primarily supported by Scramjet. Therefore some sites may not work with any of the sites.
I am getting 502 errors. What do I do?
When this happens you may either switch sites to fix the error or wait a bit. Sometimes clearing your cache can help.
If you still have any questions feel free to ask them in the discord linked here.
Yes, this project is active again for LTS support! However, the approach is now much simpler to ensure functionality: domain restocks as needed and a highly maintained source. More than ever, this project serves as a proof of concept for the brave souls willing to innovate in the web proxy service space.
Former Closing Message (Original - 2022)
This isn’t the greatest announcement sorry. After lots of thought and severe hesitation I’m shutting down Holy Unblocker and leaving TN. It's just been something that I’ve been super conflicted with for months hence the lack of updates and the massive gaps that happened last year. I just didn’t want to throw away a project that I passionately enjoyed and spent time on while making amazing friends and meeting epic devs here. I could go on forever for who these people are but ima like leave it here. They know who they are :D
The main change of thought is that I’m finally just putting an end right now due to 1) the lack of motivation 2) the community is NOT the greatest at time and not the nicest at times (have to put that out here) 3) the future doesn’t look so good for HU/TN as a project.
Some things I’ll be keeping secret since there are more reasons to this choice unless otherwise for those who don’t find this enough information. Good friends here will know that I’ve been super stressed about this choice for months now. Also regardless a good motivator for this choice is the fact that I’ll be graduating soon.
It’s possible that I may continue/come back for this in the future or keep it on GitHub only. I leave this here because even now I am still doubting myself about this change. But for now I’d check out other proxy sites like Incognito (Duce DOES a ton of updates frequently and he is the creator/developer of Ultraviolet so give him some love) :yayy_hopi:
Check out his Patreon also! For current HU patrons you will not be billed next month and the HU Patreon will be archived so head over to Duce’s patron so he can purchase more domains for Incognito.
With love <3 Emerald :HuTaoHype:
This project is maintained by the InvisiProxy LTS team and is an official flagship TitaniumNetwork web proxy site.
View the official website for more detail and credits.
This project currently uses Scramjet and Ultraviolet as web proxies adhering to the Wisp protocol. Bare-Mux is utilized for swapping transport systems to be utilized with Wisp. The included transport systems are EpoxyTransport and libcurl-transport.
- wispurr
- Scramjet
- Wisp Protocol
- EpoxyTransport
- libcurl-transport
- Merp (Obfuscation Module)
- Donglalu Proxy The Second Coming
- The Freedom Project (Hard Fork)
- Synteq (Hosting Provider)



