Estoy tratando de crear un proxy de reenvío que redirige ciertas solicitudes web a otro sitio.
Por ejemplo, si tuviera que buscar en Google, redirigiría esa búsqueda a otro servicio como DuckDuckGo/Bing/Yahoo.
Tengo el proxy escuchando las solicitudes, pero no puedo hacer que redirija:
import { createServer, createConnection, Socket } from 'net' const server = createServer((clientToProxySocket: Socket) => { clientToProxySocket.once("data", (data) => { let isTLSConnection = data.toString().indexOf("CONNECT") !== -1; let port = 80; let host; if (isTLSConnection) { port = 443; host = data.toString().split("CONNECT")[1].split(" ")[1].split(":")[0]; } else host = data.toString().split("Host: ")[1].split("\r\n")[0]; let proxyToServerSocket: Socket = createConnection({ host, port },() => console.log("Proxy to server set up")); if (isTLSConnection) clientToProxySocket.write("HTTP/1.1 200 OK\r\n\r\n"); else proxyToServerSocket.write(data); clientToProxySocket.pipe(proxyToServerSocket); proxyToServerSocket.pipe(clientToProxySocket); proxyToServerSocket.on("error", console.error); clientToProxySocket.on("error", console.error); }); }); server.on("error", console.error); server.on("close", () => console.log("Client disconnected")); server.listen(8080, () => console.log("Server listening on 0.0.0.0:8080"));Traté de agregar esto en lugar de las otras escrituras para redirigir, pero solo devuelve un ERR_TUNNEL_CONNECTION_FAILED en Chrome:
if (host.includes('google.com')) { clientToProxySocket.write( "HTTP/1.1 301 Moved Permanently\t\r\n" + "Location: https://bing.com\r\n\r\n" ); }¡Cualquier ayuda es muy apreciada!