mirror of
https://github.com/MercuryWorkshop/scramjet.git
synced 2025-05-13 22:40:01 -04:00
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/
src | ||
static | ||
.eslintrc.json | ||
.gitignore | ||
esbuild.dev.js | ||
esbuild.js | ||
fortnite | ||
package.json | ||
pnpm-lock.yaml | ||
README.md | ||
tsconfig.json |
check back in 3 months when scramjet supports 23% of what UV supports
TODO
- Finish HTML rewriting
-
<meta> tag rewriting: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta
-
Build script imports for scramjet scripts in DomHandler AST
-
example stringified output:
<!-- Append to <head> element --> <script src="./scramjet.codecs.js"></script> <script src="./scramjet.config.js"></script> <script src="./scramjet.bundle.js"></script>
<script type="importmap"></script>
rewriting- Make an array of all possible import values and pass the array onto the JS rewriter, then rewrite all the URLs inside of it
-
- Fix URL rewriting
- Pass the full the full url object arround instead of just the origin and if the url is relative append it to the url path before adding it to the origin
- Finish JS rewriting
- Only thing rewritten currently are imports and exports
- Check imports/exports for values contained in the
importmap
array, don't rewrite the node value if present
- Fix CSS rewriting
- CSS rewriting only rewrites the
url()
function, but@import
rules can import urls using just a string: https://developer.mozilla.org/en-US/docs/Web/CSS/@import
- CSS rewriting only rewrites the
- Rewrite
Link
header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Link - Write client APIs
__scope$()
function for JS rewriting- Location object
- Window object
- LocalStorage, SessionStorage, IDB objects
- Cookies
- HTMLElement overrides
- WebSocket
- SW emulation
- Blah blah blah nerdy apis just do it