File size: 1,212 Bytes
abed4cc
112d6b3
7b1a25a
abed4cc
7b1a25a
 
 
 
 
 
 
 
 
 
cb08d9d
43f02ea
17ee36d
7b1a25a
17ee36d
43f02ea
7b1a25a
 
43f02ea
 
7b1a25a
 
 
 
 
 
 
 
43f02ea
17ee36d
43f02ea
 
17ee36d
43f02ea
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
const express = require('express');
const proxy = require('express-http-proxy');
const url = require('url');
const app = express();
const targetUrl = 'https://chatgpt.com/';

// Функция для перезаписи URL в HTML-ответах
function rewriteHtmlUrls(body, req) {
  const parsedUrl = url.parse(req.url);
  return body.toString().replace(
    new RegExp('(https?:)?//' + url.parse(targetUrl).host, 'g'),
    req.protocol + '://' + req.headers.host + parsedUrl.pathname
  );
}

app.use('/', proxy(targetUrl, {
  proxyReqPathResolver: (req) => {
    return req.originalUrl;
  },
  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 = rewriteHtmlUrls(proxyResData, userReq);
      return body;
    }
    return proxyResData;
  },
}));

const port = 7860;
app.listen(port, () => {
  console.log(`Сервер запущен на порту ${port}`);
});