explaingit

etherdream/jsproxy

9,346ShellAudience · developerComplexity · 3/5LicenseSetup · moderate

TLDR

A browser-based proxy server that uses Service Workers to shift traffic-rewriting into your browser, keeping server costs low. Install on a Linux VPS or run the frontend on GitHub Pages for free.

Mindmap

mindmap
  root((jsproxy))
    What it does
      Proxy server
      Browser rewriting
      Low server load
    Tech Stack
      Service Workers
      nginx
      Cloudflare Workers
    Use Cases
      Site mirroring
      Phishing research
      Frontend acceleration
    Setup
      Linux server
      GitHub Pages frontend
      Shell install script
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Set up a low-cost proxy server on a cheap Linux VPS for website mirroring or research purposes.

USE CASE 2

Host the frontend on GitHub Pages for free and point it at your own backend to cut bandwidth costs.

USE CASE 3

Deploy a serverless proxy using Cloudflare Workers without managing your own server.

USE CASE 4

Mirror websites in a sandbox environment for phishing detection or security research.

Tech stack

ShellnginxJavaScriptService WorkersCloudflare Workers

Getting it running

Difficulty · moderate Time to first run · 30min

Requires a Linux server with root access, a shell script automates installation.

Use freely for any purpose, including commercially, as long as you keep the copyright notice.

In plain English

jsproxy is an online proxy server built around a browser technology called Service Workers. A proxy is a middleman server: instead of your browser talking directly to a website, the request goes through the proxy first, which fetches the content and passes it back. Traditional proxies do most of this work on the server side, which is expensive in CPU and bandwidth. jsproxy shifts the heavy lifting into the browser itself by using a Service Worker, which is a script that can intercept and modify network requests before they leave the browser. The README is written in Chinese. The core idea is that the server only needs to forward traffic and modify HTTP headers, rather than parsing and rewriting the full page content. Because nginx handles the forwarding and the browser handles the content rewriting, the server load stays very low. The proxy also injects a JavaScript snippet into pages it serves, which rewrites browser APIs related to URLs so that the proxied page behaves as if it is running on its original domain rather than the proxy's domain. Installation requires a Linux server with root access. A shell script handles the setup automatically. You can also run the frontend portion on GitHub Pages (a free static hosting service) and point it at your own backend, which can reduce bandwidth costs and give you a custom domain. Optional configuration lets you restrict which sites the proxy is allowed to forward to, and a separate security script can block the proxy from accessing internal network addresses to reduce certain server-side risks. The project description states its intended uses as technical research into website mirroring, sandboxing, phishing detection techniques, and accelerating access to frontend resources. The README explicitly cautions against using it for illegal purposes. A serverless variant using Cloudflare Workers is also mentioned for users who want a long-running demo without managing their own server. The project is released under the MIT license.

Copy-paste prompts

Prompt 1
Using jsproxy, walk me through deploying the frontend to GitHub Pages and connecting it to my own backend server step by step.
Prompt 2
Show me how to configure jsproxy to restrict which sites it can proxy to an approved whitelist of domains.
Prompt 3
Help me set up the Cloudflare Workers variant of jsproxy so I don't need to run my own Linux server.
Prompt 4
Explain how jsproxy's Service Worker intercepts browser requests and rewrites URLs so the proxied page behaves as if it's on its original domain.
Prompt 5
How do I use jsproxy's security script to block the proxy from accessing internal network addresses?
Open on GitHub → Explain another repo

← etherdream on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.