יצירת מזהה לקוח
-
עשיתי לפי הפתרון של הוספת אישור לוינדוס
עכשיו הבעיה שלי שאני לא מוצא את המידע הזה בשרת
זה הקוד לשרת// Import of net module const net = require("net"); const server = net.createServer(); server.on("connection", (clientToProxySocket) => { console.log("Client connected to proxy"); clientToProxySocket.once("data", (data) => { let isTLSConnection = data.toString().indexOf("CONNECT") !== -1; let serverPort = 80; let serverAddress; console.log(data.toString()); if (isTLSConnection) { serverPort = 443; serverAddress = data .toString() .split("CONNECT")[1] .split(" ")[1] .split(":")[0]; } else { serverAddress = data.toString().split("Host: ")[1].split("\r\n")[0]; } console.log(serverAddress); // Creating a connection from proxy to destination server let proxyToServerSocket = net.createConnection( { host: serverAddress, port: serverPort, }, () => { 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", (err) => { console.log("Proxy to server error"); console.log(err); }); clientToProxySocket.on("error", (err) => { console.log("Client to proxy error"); console.log(err) }); }); }); server.on("error", (err) => { console.log("Some internal server error occurred"); console.log(err); }); server.on("close", () => { console.log("Client disconnected"); }); server.listen( { host: "0.0.0.0", port: 8080, }, () => { console.log("Server listening on 0.0.0.0:8080"); } );
קרדיט https://github.com/kasattejaswi/nodejs-proxy-server/blob/main/proxy.js
אני לא מצליח למוצא את המידע בdata שמתקבלת מהלקוחאשמח לכל ערה בנידון תודה רבה
-
@אביחיל כתב ביצירת מזהה לקוח:
אני מכיר את זה אבל זה לא מתאים למקרה שלי זה מיועד לפרוקסי של שרתים להסתיר את השרת כלומר שהשרת לא יהא חשוף ללקוח ישרות מה שנקרא פרוקסי הפוך אני מחפש פרוקסי בשביל הצד של הלקוח, כך נראה לי אם אני טועה אשמח שתתקן אותי
לפי מה שבדקתי בעבר הלא רחוק, אתה צודק, אין כל כך משהו מוכן לצורך זה
-
-
@yossiz כתב ביצירת מזהה לקוח:
לא (יש אפשרות לפרוקסי SOCKS, אבל בסתם זה פרוקסי HTTP). גם הקוד שלך הוא עבור פרוקסי HTTP
@אביחיל כתב ביצירת מזהה לקוח:
הסיבה שאני חושב כך זה בגלל שאם אני בונה שרת רגיל של אקספרס ומכניס את הפרטים שלו בהגדרות הפרוקסי של וינדוס השרת בכלל לא מגיב
ומה הסיבה לזה?
-
@אביחיל כתב ביצירת מזהה לקוח:
הסיבה שאני חושב כך זה בגלל שאם אני בונה שרת רגיל של אקספרס ומכניס את הפרטים שלו בהגדרות הפרוקסי של וינדוס השרת בכלל לא מגיב
יכול להיות שזה בגלל שרוב ככל הבקשות הם עם מתודת
CONNECT
ולאGET
(דבר זה נצרך עבור HTTPS). בברירת מחדל אקפרס לא מגיב ל-CONNECT
-
ישבתי על זה כמה שעות הצלחתי להאזין לבקשות CONNECT רק בשרת של המודול HTTP
const server = http.createServer() server.on('connect', (request, clientSocket, head) => { const { method, url, headers } = request; console.log(headers);
האם מישהו יודע איך אפשר לעשות את זה גם במודול exspres
-