node搭建代理服务器

一.创建一个server.js,copy下面的代理服务器,用终端输入node server.js,启动代理

const http = require("http");

const https = require("https"); // 如果要支持HTTPS代理,需要引入https模块

// 创建服务器

const server = http.createServer();

// 请求转发处理器

function forwardRequest(req, res, targetUrl) {

  const protocol = targetUrl.startsWith("https://") ? https : http;

  // 创建代理请求选项

  const options = new URL(targetUrl);

  options.method = req.method;

  options.headers = req.headers;

  // 发送代理请求

  let proxyReq = protocol.request(options, (proxyRes) => {

    // 将代理响应 headers 设置到原始响应上

    res.writeHead(proxyRes.statusCode, proxyRes.headers);

    // 将代理响应体数据转发到原始响应

    proxyRes.pipe(res);

  });

  // 错误处理

  proxyReq.on("error", (err) => {

    console.error(`Error in forwarding request: ${err}`);

    res.statusCode = 500;

    res.end("Proxy Error");

  });

  // 将原始请求的数据转发到代理请求

  req.pipe(proxyReq);

}

// 监听当前服务器请求,接受request处理函数

server.on("request", (req, res) => {

  // 根据URL决定是否进行代理或直接响应

  if (req.url == "/" || req.url == "/user") {

    res.end("hello world");

  } else if (req.url === "/proxy" && req.method === "GET") { // 假设我们只对 '/proxy' 路径做代理,且仅支持 GET 方法

    const targetUrl = "https://img-home.csdnimg.cn/data_json/toolbar/toolbar1105.json"; // 替换为你要代理的实际目标URL

    forwardRequest(req, res, targetUrl);

  } else {

    res.statusCode = 404;

    res.end("Not Found");

  }

});

// 监听端口

server.listen(5501, () => {

  console.log("❌❌❌❌5501启动成功  ----->  ");

});

二.创建一个html,请求会被node监听代理,直接copy就能用,要保持请求和代理服务器的端口一致,注意我用的jq做的请求

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

</head>

<body>

</body>

<script src="/js/jquery.min.js"></script>

<script>

    // 未代理

    // $.get("https://img-home.csdnimg.cn/data_json/toolbar/toolbar1105.json", function (res) {

    //     console.log('❌❌❌❌res  ----->  ', res);

    // })

    // 代理

    $.get("http://localhost:5501/proxy", function (res) {

        console.log('❌❌❌❌res  ----->  ', res);

    })

</script>

</html>

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值