一、项目说明
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 |