Ultraviolet

Ultraviolet is a web proxy used for evading internet censorship or accessing websites in a controlled sandbox. It is designed with security and performance in mind. Ultraviolet intercepts HTTP requests with a service worker, using a BareMux transport.
Features
Section titled “Features”Ultraviolet offers several features that set it apart from its predecessors, including CAPTCHA and hCAPTCHA support, URL encoding settings for added security, full end-to-end encryption, client-side configuration via service workers, high speed compared to other web proxies, blacklist settings and more for easy hosting, leak prevention, regular updates, and improved resource usage and speed for better setups with a dedicated server instance.
Supported Sites
Section titled “Supported Sites”Some of the popular websites that Ultraviolet supports include:
Used by
Section titled “Used by”Upgrading
Section titled “Upgrading”A guide for updating from v2 to v3 can be found here.
Older Bare servers
Section titled “Older Bare servers”Starting from v2, Ultraviolet only supports Bare servers v3+.
If you operate an outdated Bare server, we encourage you to update. If you’re using an outdated Bare server, we encourage you to find an updated Bare server or host your own.
If you can’t do either of the above, you can install an outdated and unsupported version of Ultraviolet.
npm install @titaniumnetwork-dev/ultraviolet@1
Deployment
Section titled “Deployment”This repository can be built, but it can’t be deployed to any services. See Ultraviolet-App for a complete and customizable Ultraviolet setup that you can deploy.
Documentation
Section titled “Documentation”Documentation can be found in the wiki.
Building
Section titled “Building”- Clone the repository
git clone https://github.com/titaniumnetwork-dev/Ultraviolet
cd Ultraviolet
- Install dependencies
npm install
- Produce the
dist/
directory and compile scripts
npm run build
Installation
Section titled “Installation”This will provide built files and the JS API to access the path of dist files.
npm install @titaniumnetwork-dev/ultraviolet
Changelogs
Section titled “Changelogs”- This version of Ultraviolet has support for using bare-mux transports, allowing for use for other implementations like EpoxyTransport, CurlTransport, and the existing implementation Bare-Client.
v2.0.0
Section titled “v2.0.0”- This version of Ultraviolet has support for Bare server v3
- Support for older Bare servers was dropped.
v1.0.10
Section titled “v1.0.10”- This version of Ultraviolet fixes an NPM versioning error.
v1.0.8
Section titled “v1.0.8”- This version of Ultraviolet improves error messages.
v1.0.7
Section titled “v1.0.7”- This version of Ultraviolet correctly sets the
cache
option when making a request.
v1.0.6
Section titled “v1.0.6”- This version of Ultraviolet upgrades @tomphttp/bare-client. As a result, refreshing can fix errors with the Bare metadata being fetched.
v1.0.5
Section titled “v1.0.5”- This version of Ultraviolet fixes a minor bug with
blob:
URLs.
v1.0.4
Section titled “v1.0.4”Massive rework for Ultraviolet! Improvements to resource usage, performance and overall site support. TODO!
v1.0.2
Section titled “v1.0.2”This package now targets CommonJS.
v1.0.1
Section titled “v1.0.1”In your sw.js
script, you MUST import uv.bundle.js
then uv.config.js
in order. This is because we can no longer hard-code the paths. Ideally, we would import uv.config.js
then use the config.bundle path in the serviceworker, however the config is dependant on uv.bundle.js
, which we don’t know the location to.
Old:
importScripts("./uv/uv.sw.js");
const sw = new UVServiceWorker();
self.addEventListener("fetch", (event) => event.respondWith(sw.fetch(event)));
New:
+ importScripts('./uv/uv.bundle.js');
+ importScripts('./uv/uv.config.js');
importScripts('./uv/uv.sw.js');
const sw = new UVServiceWorker();
self.addEventListener('fetch', event =>
event.respondWith(
sw.fetch(event)
)
);
You are still required to specify all paths in uv.config.js
.
Deployment
Section titled “Deployment”Ultraviolet-Node
The deployable all-in-one bundle for Ultraviolet, a highly sophisticated proxy used for evading internet censorship or accessing websites in a controlled sandbox using the power of service-workers and more!
If you are deploying to an alternative service or to a server, refer to Deploy via terminal.
Additional information such as customizing your frontend can be found on the wiki.