Spaces:
Running
Running
const express = require('express'); | |
const proxy = require('express-http-proxy'); | |
const url = require('url'); | |
const app = express(); | |
const targetUrl = 'https://chatgpt.com/'; | |
// Функция для перезаписи URL в ответах | |
function rewriteURLs(body, req) { | |
const proxyUrl = req.protocol + '://' + req.get('host'); | |
const bodyString = body.toString('utf8'); // Преобразуем буфер в строку UTF-8 | |
const newBody = bodyString.replace(new RegExp(targetUrl, 'g'), proxyUrl); | |
return Buffer.from(newBody, 'utf8'); // Преобразуем строку обратно в буфер UTF-8 | |
} | |
app.use('/', proxy(targetUrl, { | |
proxyReqPathResolver: (req) => { | |
return url.parse(req.url).path; | |
}, | |
proxyReqOptDecorator: (proxyReqOpts, srcReq) => { | |
proxyReqOpts.headers['Host'] = new URL(targetUrl).host; | |
proxyReqOpts.headers['Referer'] = targetUrl; | |
return proxyReqOpts; | |
}, | |
userResDecorator: (proxyRes, proxyResData, userReq, userRes) => { | |
const contentType = proxyRes.headers['content-type']; | |
if (contentType && contentType.includes('text/html')) { | |
const body = rewriteURLs(proxyResData, userReq); | |
return body; | |
} | |
return proxyResData; | |
}, | |
})); | |
const port = 7860; | |
app.listen(port, () => { | |
console.log(`Сервер запущен на порту ${port}`); | |
}); |