网页代理服务 Node-Unblocker Docker 部署方法

一、项目说明

   Node-Unblocker  是一个基于 Node.js 的网页代理程序,可用来绕过 CORS、访问被限制的网页资源,适用于加速访问公共网页或测试跨域接口。

✅ 支持 GET/POST 请求

✅ 支持简单网页访问

⚠️ 不适合访问 Facebook / YouTube / GitHub 等复杂 JS 网页

二、创建目录

1. 目录结构
node-unblocker/
├── Dockerfile
└── server.js
2. 创建目录
mkdir -p ~/node-unblocker && cd ~/node-unblocker

三、准备文件

1. 写入 Dockerfile
cat <<'EOF' > Dockerfile
FROM node:18-alpine

WORKDIR /app

RUN npm install unblocker

COPY server.js .

EXPOSE 8080

CMD ["node", "server.js"]
EOF
2. 写入 server.js
cat <<'EOF' > server.js
const express = require('express');
const Unblocker = require('unblocker');
const app = express();

// 支持通过环境变量 UNBLOCKER_PREFIX 自定义路径前缀
const prefix = process.env.UNBLOCKER_PREFIX || '/proxy/';

app.use(Unblocker({
  prefix: prefix,
  requestMiddleware: [],
}));

app.listen(8080, () => {
  console.log(`Unblocker proxy running on port 8080 with prefix "${prefix}"`);
});
EOF
四、构建并运行容器
1. 构建镜像
docker build -t node-unblocker .
2. 启动容器(示例使用宿主端口 18080)
docker run -d --restart=always -p 18080:8080 node-unblocker
五、访问方式

直接在浏览器中访问:

http://<服务器IP>:18080/proxy/https://ip138.com

六、安全建议(可选)

添加白名单域名防止被滥用:

修改 server.js

const allowedDomains = ['example.com', 'ip138.com'];

app.use((req, res, next) => {
  try {
    const target = req.url.slice(1); // 去掉 `/` 前缀
    const hostname = new URL(target).hostname;

    if (!allowedDomains.some(domain => hostname.includes(domain))) {
      return res.status(403).send('Access to this domain is not allowed.');
    }

    next();
  } catch (err) {
    res.status(400).send('Invalid URL');
  }
});

七、打包成镜像上传到docker hub

docker images #先查看一下
docker tag node-unblocker:latest ad80a1/node-unblocker:latest   #给已有镜像重新打标签(改名)
docker push ad80a1/node-unblocker:latest    #先登录,然后上传镜像到 Docker Hub
docker run -d -p 18080:8080 ad80a1/node-unblocker:latest  #以后直接拉镜像部署

八、直接拉取镜像部署

1、拉镜像部署
docker run -d --restart=always \
  -p 18080:8080 \
  -e UNBLOCKER_PREFIX='/proxy/' \
  ad80a1/node-unblocker
访问代理页面:
http://<你的服务器IP>:18080/proxy/https://example.com
2、自定义路径前缀(可选)

你可以通过环境变量 UNBLOCKER_PREFIX 自定义访问前缀。

例如,想去掉 /proxy/,直接访问根路径:

docker run -d --restart=always \
  -p 18080:8080 \
  -e UNBLOCKER_PREFIX='/' \
  ad80a1/node-unblocker
访问方式变为:
http://<你的服务器IP>:18080/https://example.com
3.说明
  • 默认监听端口:8080(容器内部)
  • 映射端口:如 18080:8080 可自由更改
  • 基础镜像:node:18-alpine
九、注意事项
  • 本镜像仅用于学习和调试用途,请勿用于违法用途。
  • 某些网站(如 Facebook、YouTube)由于安全策略限制,可能无法成功代理。
  • 不适合的目标网站
网站 问题原因
GitHub CSP 安全策略 + 动态资源多
Facebook / YouTube 被墙 / 阻止代理 IP
Cloudflare 防护站 会检测 User-Agent / Referer / Cookies