An encrypted proxy for browser javascript http://epoxy.r58playz.dev/
Find a file
2024-07-22 14:29:35 -07:00
.cargo tests 2024-03-23 10:05:17 -07:00
certs-grabber add a new Payload struct to allow for one-copy writes and cargo fmt 2024-07-17 16:23:58 -07:00
client default to wisp v1 2024-07-18 21:22:35 -07:00
server redirect user to server readme 2024-07-22 14:29:35 -07:00
simple-wisp-client random fixes 2024-07-22 11:34:33 -07:00
wisp read split frames 2024-07-22 11:04:12 -07:00
.envrc nixification 2024-01-09 19:46:05 -08:00
.gitignore add a minimal build 2024-07-03 11:04:02 -07:00
Cargo.lock add yaml config support 2024-07-22 13:54:41 -07:00
Cargo.toml wsproxy support with udp, logger, other random stuff 2024-07-21 21:35:33 -07:00
flake.lock nixification 2024-01-09 19:46:05 -08:00
flake.nix nixification 2024-01-09 19:46:05 -08:00
README.md redirect user to server readme 2024-07-22 14:29:35 -07:00
rustfmt.toml fix the parking-lot issue 2024-07-08 17:12:25 -07:00

epoxy

Epoxy is an encrypted proxy for browser javascript. It allows you to make requests that bypass CORS without compromising security, by running SSL/TLS inside webassembly.

Using the client

Epoxy must be run from within a web worker and must be served with the security headers needed for SharedArrayBuffer. Here is a simple usage example:

import epoxy from "./epoxy-module-bundled.js";
import ROOTS from "./pkg/certs-module.js";
// or
// importScripts("epoxy-bundled.js");
// importScripts("certs.js");

const { EpoxyClient, EpoxyClientOptions } = await epoxy();

let options = new EpoxyClientOptions();
options.user_agent = navigator.userAgent;

let client = await new EpoxyClient("wss://localhost:4000", ROOTS, options);

let response = await client.fetch("https://httpbin.org/get");
console.log(await response.text());

See client/demo.js for more examples.

Using the server

See the server readme.

Building

Server

See the server readme.

Client

Important

Building the client is only supported on Linux.

Make sure you have the wasm32-unknown-unknown rust target, the rust-std component, and the wasm-bindgen, wasm-opt, and base64 binaries installed.

In the client directory:

bash build.sh

To host a local server with the required headers:

python3 serve.py