Scramjet is an experimental interception based web proxy designed to evade internet censorship, bypass arbitrary web browser restrictions and innovate web proxy technologies. This project strives to maintain security, developer friendliness and performance unlike many other web proxies regardless of its open source nature. https://scramjet.mercurywork.shop/
Find a file
velzie 667cf55357
Merge pull request #91 from Proxy-alt/main
Fix: panic_immediate_abort is a real strategy
2025-11-03 20:12:16 -05:00
.github/workflows ci: fix package validation 2025-09-11 10:17:50 -05:00
.vscode ci: fix package validation 2025-09-11 10:17:50 -05:00
.zed feat: basic force referrer support and sec-fetch-site emulation (#40) 2025-07-09 18:47:52 -05:00
assets fix: handle extra no-referrer case 2025-09-10 10:57:48 -05:00
ci fix(ci) 2025-08-31 17:28:11 -04:00
docs feat: start working on MD docs and introduce Remark as a doc formatter 2025-09-24 14:23:36 -04:00
lib feat: package types 2025-09-09 00:41:15 -04:00
rewriter Only use STD_FEATURES if needed 2025-10-20 10:36:51 -04:00
scripts feat: TypeDoc 2025-08-31 16:07:45 -04:00
src chore: use idb dependency and reorganize types 2025-09-24 16:25:43 -04:00
static pin dreamland, fixes #81 2025-09-30 14:30:55 -07:00
tests typings are for npm, so use the npm entry as the typings entry (#68) 2025-09-12 23:56:11 -05:00
.editorconfig feat: add configs for VSCode and other editors with a EditorConfig 2025-09-06 15:21:22 -04:00
.gitignore fix(typedoc): output docs to the correct directory 2025-09-26 21:08:51 -04:00
.prettierignore typings are for npm, so use the npm entry as the typings entry (#68) 2025-09-12 23:56:11 -05:00
.remarkignore feat: start working on MD docs and introduce Remark as a doc formatter 2025-09-24 14:23:36 -04:00
.remarkrc.js feat: start working on MD docs and introduce Remark as a doc formatter 2025-09-24 14:23:36 -04:00
codespace-basic-setup.sh --version 0.2.100 (#64) 2025-09-11 15:03:48 -05:00
CONTRIBUTOR_LICENSING.md add CONTRIBUTOR_LICENSING.MD 2024-11-11 21:17:59 -05:00
eslint.config.mjs Refactor scramjet to compile to a single bundle, eliminating the need for globals containing state (#2) 2025-07-16 20:52:18 -07:00
jsconfig.json typings are for npm, so use the npm entry as the typings entry (#68) 2025-09-12 23:56:11 -05:00
LICENSE fix license 2025-07-04 09:51:10 -04:00
package.json chore: use idb dependency and reorganize types 2025-09-24 16:25:43 -04:00
playwright.config.ts ci(workflow): add package validation 2025-09-09 17:34:05 -04:00
pnpm-lock.yaml chore: use idb dependency and reorganize types 2025-09-24 16:25:43 -04:00
pnpm-workspace.yaml remove html rewriter, fix transitive deps eating up bundle size 2025-08-03 22:49:33 -07:00
prettier.config.js proxy more css stuff 2025-06-28 01:41:07 -05:00
README.md scramjet is not deprecated 2025-10-18 21:26:07 -04:00
rslib.config.ts typings are for npm, so use the npm entry as the typings entry (#68) 2025-09-12 23:56:11 -05:00
rspack.config.js chore(rspack): suppress performance warnings 2025-09-24 16:25:00 -04:00
server.js ci: fix package validation 2025-09-11 10:17:50 -05:00
tsconfig.json feat: package types 2025-09-09 00:41:15 -04:00
tsconfig.rslib.json typings are for npm, so use the npm entry as the typings entry (#68) 2025-09-12 23:56:11 -05:00
tsconfig.user-facing.json feat: start working on MD docs and introduce Remark as a doc formatter 2025-09-24 14:23:36 -04:00
typedoc.dev-facing.json feat: TypeDoc 2025-08-31 16:07:45 -04:00
typedoc.json fix(typedoc): output docs to the correct directory 2025-09-26 21:08:51 -04:00

Scramjet

npm version

Scramjet is an interception-based web proxy designed to bypass arbitrary web browser restrictions, support a wide range of sites, and act as middleware for open-source projects. It prioritizes security, developer friendliness, and performance.

Supported Sites

Scramjet has CAPTCHA support! Some of the popular websites that Scramjet supports include:

Ensure you are not hosting on a datacenter IP for CAPTCHAs to work reliably along with YouTube. Heavy amounts of traffic will make some sites NOT work on a single IP. Consider rotating IPs or routing through Wireguard using a project like wireproxy.

An easy to deploy version of Scramjet can be found at Scramjet-App.

Development

Dependencies

Building

  • Clone the repository with git clone --recursive https://github.com/MercuryWorkshop/scramjet
  • Install the dependencies with pnpm i
  • Build the rewriter with pnpm rewriter:build
  • Build Scramjet with pnpm build

Running Scramjet Locally

You can run the Scramjet dev server with the command

pnpm dev

Scramjet should now be running at http://localhost:1337 and should rebuild upon a file being changed (excluding the rewriter).

Setting up Typedoc

The official Scramjet Typedoc gets deployed via GitHub Actions along with the demo site here.

You can run it locally with:

pnpm run docs
pnpm docs:dev
pnpm docs:serve

Set up everything

Do you want to run the Scramjet demo and Typedoc together like what is served on GitHub Pages by the Action?

You can do this by running the serve script:

chmod +x scripts/serve-static.sh
./scripts/serve-static.sh

This essentially simulates the CI pipeline, but in a shell script.

Resources

  • TN Docs - There's a page on TN's docs for Scramjet, which is structured more like a guide if you are an interested proxy site developer.
  • Scramjet Typedocs - Contains documentation for Scramjet APIs. This is useful for any proxy site developer.
  • Scramjet-App - A simple example of a proxy site, which uses Scramjet in a mass-deployable manner. This is based on Ultraviolet-App for familiarity.