cloudfucked
This commit is contained in:
commit
8c3f23c605
|
@ -0,0 +1,39 @@
|
|||
# Worker proxy
|
||||
Simple script to deploy an HTTP proxy on any of those meme-ass serverless servers.
|
||||
|
||||
## Install (for cloudflare workers)
|
||||
```
|
||||
node -v # should output v18.x or v20.x or some shit
|
||||
sudo npm install -g wrangler
|
||||
wrangler login # this will open some garbage in a browser tab. authenticate your ass
|
||||
wrangler init worker-proxy
|
||||
cd worker-proxy/src
|
||||
rm index.js
|
||||
wget https://git.lolcat.ca/lolcat/worker-proxy/raw/branch/master/src/index.js
|
||||
```
|
||||
|
||||
## Configure
|
||||
Edit line 10 of `index.js` with your favorite text editor. Change the password to something only you knows. A good way to make shit secure is by running the following garbage in a PHP shell:
|
||||
|
||||
```
|
||||
php -a
|
||||
php > echo bin2hex(random_bytes(21));
|
||||
605ca86cd0e70b7cb96e2ccc5902e70639afe074aa
|
||||
```
|
||||
|
||||
This way, only (You) can use your proxy.
|
||||
|
||||
## Run
|
||||
```
|
||||
wrangler dev # Runs proxy locally (useless, but lets you know shit werks)
|
||||
wrangler publish
|
||||
```
|
||||
|
||||
## Usage
|
||||
When you run the command `wrangler publish`, Cloudfart should give you some URL. Go and visit it. The front page should read "Fuck off".
|
||||
|
||||
To proxy things, visit this endpoint:
|
||||
|
||||
/?p={Website}&k={YourKey}
|
||||
|
||||
This garbage should mirror all HTTP headers both ways, although cloudshit appends a bunch of useless headers to the response.
|
|
@ -0,0 +1,52 @@
|
|||
export default {
|
||||
async fetch(request){
|
||||
const req = new URL(request.url);
|
||||
const url = req.searchParams.get("p");
|
||||
const pw = req.searchParams.get("k");
|
||||
|
||||
if(
|
||||
!url ||
|
||||
!pw ||
|
||||
pw != "185d7c9bfb0d5b1bd67373f8b4f0a04a85dfa4aa78"
|
||||
){
|
||||
|
||||
return new Response("Fuck off", { status: 404 });
|
||||
}
|
||||
|
||||
// clone headers to send to target
|
||||
var headers = new Headers(request.headers);
|
||||
headers.delete("host");
|
||||
|
||||
try{
|
||||
const proxy_req =
|
||||
await fetch(
|
||||
url,
|
||||
{
|
||||
method: request.method,
|
||||
headers: headers,
|
||||
body: request.method !== "GET" && request.method !== "HEAD" ? await request.text() : undefined,
|
||||
}
|
||||
);
|
||||
|
||||
// send back proxied headers
|
||||
const headers_recv = new Headers();
|
||||
|
||||
proxy_req.headers.forEach(function(value, key){
|
||||
|
||||
headers_recv.set(key, value);
|
||||
});
|
||||
|
||||
const proxy_res = await proxy_req.arrayBuffer();
|
||||
|
||||
return new Response(proxy_res, {
|
||||
status: proxy_req.status,
|
||||
statusText: proxy_req.statusText,
|
||||
headers: headers_recv
|
||||
});
|
||||
|
||||
}catch(err){
|
||||
|
||||
return new Response(err.toString(), { status: 400 });
|
||||
}
|
||||
}
|
||||
};
|
Loading…
Reference in New Issue