/
estr
/
StupidProxy
Обзор
Документация
Войти
/
estr
/
StupidProxy
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
server.js
72 строки
2 KB
ev.strelets
ai generated proxy
19 дек 2025, 13:29
19 дек 2025, 13:29
5e68d45
Код
Авторство
О чём код?
const express = require('express'); const httpProxy = require('http-proxy'); const { SocksProxyAgent } = require('socks-proxy-agent'); const app = express(); const PORT = process.env.PORT; const SERVICE_URL = process.env.SERVICE_URL; const PROXY_URL = process.env.PROXY_URL; const proxyAgent = PROXY_URL ? new SocksProxyAgent(PROXY_URL) : null; console.log(`[INIT] Starting proxy app`); console.log(`[CONFIG] PORT: ${PORT}`); console.log(`[CONFIG] SERVICE_URL: ${SERVICE_URL}`); console.log(`[CONFIG] PROXY_URL: ${PROXY_URL || 'not set'}`); console.log(`[CONFIG] Using proxy agent: ${proxyAgent ? 'yes' : 'no'}`); const proxy = httpProxy.createProxyServer({ target: SERVICE_URL, changeOrigin: true, ws: true, agent: proxyAgent, timeout: 30000, // Таймаут 30 сек, чтобы не висело }); proxy.on('error', (err, req, res) => { console.error(`[PROXY ERROR] ${new Date().toISOString()} - URL: ${req.url} - Error: ${err.message}`); if (res.headersSent) { res.end(); } else { res.status(500).json({ error: 'Proxy error' }); } }); proxy.on('proxyReq', (proxyReq, req, res, options) => { console.log(`[PROXY REQ] ${new Date().toISOString()} - ${req.method} ${req.url} -> ${options.target?.href || SERVICE_URL}`); }); proxy.on('proxyRes', (proxyRes, req, res) => { console.log(`[PROXY RES] ${new Date().toISOString()} - ${req.method} ${req.url} -> Status: ${proxyRes.statusCode}`); }); proxy.on('open', (proxySocket) => { console.log(`[WS OPEN] ${new Date().toISOString()} - WebSocket opened`); }); proxy.on('close', (proxyRes, proxySocket, proxyHead) => { console.log(`[WS CLOSE] ${new Date().toISOString()} - WebSocket closed`); }); app.use('/', (req, res, next) => { console.log(`[REQUEST] ${new Date().toISOString()} - ${req.method} ${req.originalUrl} - Headers: ${JSON.stringify(req.headers)}`); proxy.web(req, res); }); const server = app.listen(PORT, () => { console.log(`[START] Proxy server running on port ${PORT}`); }); server.on('upgrade', (req, socket, head) => { console.log(`[WS UPGRADE] ${new Date().toISOString()} - WebSocket upgrade request: ${req.url}`); proxy.ws(req, socket, head); }); process.on('uncaughtException', (err) => { console.error(`[UNCAUGHT EXCEPTION] ${err.stack}`); }); process.on('unhandledRejection', (reason, promise) => { console.error(`[UNHANDLED REJECTION] ${reason} - Promise: ${promise}`); });