Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
QuiteAFancyEmerald
GitHub Repository: QuiteAFancyEmerald/Holy-Unblocker
Path: blob/master/README.md
5154 views

Holy Unblocker LTS (v6.x.x)

GitHub Actions Status GitHub Actions Status Docker Image Version Docker Pulls

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!

You can support Holy Unblocker by starring the repository!

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 clientless solution to use Tor 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. Holy Unblocker LTS works with a large number of sites, including YouTube, Discord, GeForce NOW and more! Also has a good amount of locally hosted games featured on the site.

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.

Current Branch: Latest

Branch Types
  • Latest (master; built for FOSS and SEO)

  • Beta (pending changes; changes that may break things)

  • Production (v4, v5, v6; stable version of Holy Unblocker LTS. Changes for self hosting in production settings; max filtering evasion and request handling)

Considering switching branches for self-hosting to a production branch!

View the self-deployment options if you wish to self host this prokect. Can't deploy using any of the free options? Check out Railway or look into cheap, paid VPS hosting solutions. If you don't wish to self-host join the discord for more official instance links that are restocked frequently.

Be sure to join Titanium Network's Discord for more official site links: https://discord.gg/unblock


[!CAUTION] If you are going to self-host Holy Unblocker LTS please switch to the PRODUCTION branch for filter evasion features. The master branch is intended for development work and a highly readable source for developers. You can select a production branch (v6.x_production) via the branches dropdown.

[!TIP] Holy Unblocker 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 SitesFeatures
YoutubeBuilt-in variety of open source web proxies with both a focus on speed and/or security
RedditFeatures Source Randomization and DOM Masquerading to circumvent major filters effectively along with randomizations to proxy globals
DiscordTab title + icon customization using the Settings Menu for improved browsing history stealth
InstagramAdblocking support across all websites while surfing and low latency DNS on official servers
Reddit.comSOCKS5 and Onion routing support with Tor within the Settings Menu. Use Tor/Onion sites in any browser!
GeForce NOWGame library with moderately decent titles and open-source emulation projects
SpotifyBypass regional proxy blocks by swapping regions or enabling Tor
And essentially all sites!Built for intensive production loads and ease of setup

Deploy Holy Unblocker

Free Deployments

Deploy to Koyeb Deploy to Oracle Cloud

Alternative Free Sources

Deploy to Cyclic Deploy to Render Deploy to Fly.io

Production Paid/Free Options (Requires Payment Info)

Deploy to Azure Deploy to IBM Cloud Deploy to Amplify Console Run on Google Cloud

What happened to Replit/Heroku Deployment?

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.

GitHub Codespaces

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]/Holy-Unblocker on your account

  • Ensure the branch is set to master and the dev container configuration is set to Holy Unblocker LTS

  • Select Create Codespace and allow the container to setup

  • Type npm run fresh-install and npm start in the terminal

  • Click "Make public" on the application popup, then access the deployed website via the ports tab.

Table of contents:

How to Setup

Example: v6.x_production instead of master

Terminal

Either use the button above to deploy to the deployment options above or type the commands below on a dedicated server:

git clone https://github.com/QuiteAFancyEmerald/Holy-Unblocker.git cd Holy-Unblocker # Edit config.js and set production to true if you want to use pm2 (Allows for easier VPS hosting) npm run fresh-install npm starts # Or on subsequent uses... npm restart # For killing any production processes made with pm2 npm run kill # For clearing respective Rammerhead cache npm run clean # If you encounter any build errors... npm run build # If you encounter any service errors... npm run test

This website is hosted locally with Scramjet, Ultraviolet (Wisp, Bare-Mux, EpoxyTransport, CurlTransport) and Rammerhead built-in.

You will need Node.js and Git installed; below is an example for Debian/Ubuntu setup.

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 git clone https://github.com/QuiteAFancyEmerald/Holy-Unblocker.git cd Holy-Unblocker npm run fresh-install # Then edit config.json to change production to true to automatically use pm2 npm start # Then setup a reverse proxy using NGINX; use the link below for the NGINX guide. You can edit the file in /etc/nginx sudo systemctl restart nginx # For Tor look it up if you need it setup

Resources for self-hosting:

Configuration

Server Configuration 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, session jobs for Rammerhead and source rewrites setup.

  • disguiseFiles: Enable DOM masquerading which obfuscates real the real content fetches for HU LTS. This is done through disguising requests, decompressing and then reconstructing the DOM tree.

  • usingSEO: Enable Source Randomization which randomizes the source by swapping chunks of data specified in ./src/data.json. Highly useful for masking keywords that will automatically flag or block Holy Unblocker LTS as well as preventing source blocks.

Tor/Onion Routing Setup

You need to setup Tor (no GUI need/GUI is alright) 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 Holy Unblocker 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 Holy Unblocker LTS when enabled by the user via the Settings menu.

Proxy Configuration

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.

  • stockSW: The default service worker configuration file for Ultraviolet. For Holy Unblocker however adblocking is automatically enabled so this is not used by default.

  • blacklistSW: A modified version of Ultraviolet that allows for blacklisting domains and adblocking.

  • proxyUrl: Specifies a SOCKS5 protocol URL defaulting to the default Tor proxy port. This can be swapped out with any valid port or SOCK5s proxy.

  • transports: Specifies any provided ports to be swapped via Bare-Mux and utilize Wisp.

  • wispUrl: Modify the pathname or url handling for Wisp

  • defaultMode: Specify the default transport used globally (can be swapped by the users still via the Settings menu)

  • ScramjetController: This constructor allows you to swap out the prefix used for Scramjet dynamically and specify file locations. Note you may need to edit ./views/scram/scramjet.sw when changing file names.

Client Navigation Configuration

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 linking games.

  • getDomain: This constant is used for specifying any subdomains to remove when appending a URL into the omnibox.

  • goFrame: This specifies the stealth frame used for Holy Unblocker LTS

  • sx: This constant specifies the search engine you want to be proxied whenever a user types something in that isn't a URL

  • search/uvUrl/sjUrl: These functions specify and parse the queries used for submitted URLs

  • RammerheadEncode: This constant is a dependency for Rammerhead parsing and querying

  • urlHandler/asyncUrlHandler: Used to set functions for the goProx object.

  • goProx: This constant allows for the mapping of URL handling for specific proxies, games or links that need to fall under a web proxy.

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: Attaches event listeners using goProx for any buttons or inputs needed

// 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: Automatically takes paths stated in ./views/assets/json and appends them depending on the page and usage. This is used for hiding links that would lead to filter blocks and create an easier system for adding games.

Games Management

As stated above all game links that need to be appended to a page (including images and descriptions) are managed via the nav files in./views/assets/json.

Download the latest release here and extract it within a folder called /views/archive.

  • views/archive/g: Contains any local or external HTML5/web games.

  • views/archive/gfiles/flash: Contains Ruffle (an Adobe Flash emulator) and a collection of flash games linked to an external CDN.

  • views/archive/gfiles/rarch: Contains webretro which is a project that ports RetroArch to WASM. Supports many systems like GBA, N64, etc; ROMS are NOT INCLUDED.

Structure