1. 创建项目
mkdir socks5-proxy-server
cd socks5-proxy-server
npm init -y
2. 安装依赖
npm install express http-proxy socks-proxy-agent axios cors
3. 创建server.js
const express = require('express');
const { SocksProxyAgent } = require('socks-proxy-agent');
const axios = require('axios');
const cors = require('cors');
const app = express();
app.use(cors());
app.use(express.json());
// 健康检查端点
app.get('/health', (req, res) => {
res.json({ status: 'ok' });
});
// SOCKS5验证端点
app.post('/api/validate-socks5', async (req, res) => {
const { ip, port, username, password, testUrl = 'http://www.example.com' } = req.body;
try {
// 构建SOCKS5代理配置
let proxyOptions = `socks5://${ip}:${port}`;
if (username && password) {
proxyOptions = `socks5://${username}:${password}@${ip}:${port}`;
}
// 创建代理agent
const agent = new SocksProxyAgent(proxyOptions);
// 测试连接
const startTime = Date.now();
const response = await axios.get(testUrl, {
httpAgent: agent,
httpsAgent: agent,
timeout: 10000
});
const ping = Date.now() - startTime;
// 获取IP信息
const ipInfo = await axios.get(`https://ipapi.co/${ip}/json/`);
res.json({
success: true,
ping,
location: `${ipInfo.data.country_name || '未知'}, ${ipInfo.data.city || '未知'}`,
isp: ipInfo.data.org || '未知'
});
} catch (error) {
res.json({
success: false,
error: error.message
});
}
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
4. 启动服务
node server.js
服务启动后,可以通过以下命令测试:
curl -X POST http://localhost:3000/api/validate-socks5 \
-H "Content-Type: application/json" \
-d '{"ip":"代理IP","port":"代理端口","username":"用户名","password":"密码"}'