独享代理 Node.js 示例

阅读模式

这个示例基于 demo-sdk-dedicated-proxy 的 Node.js 目录整理,适合先验证 axios 代理配置和管理接口调用。

运行前准备

  • 安装依赖:npm i axios http-proxy-agent https-proxy-agent
  • 设置环境变量:
    • PRIVATE_HOST
    • PRIVATE_PORT
    • PRIVATE_USERNAME
    • PRIVATE_PASSWORD
    • 可选:PRIVATE_BASE
    • 可选:TARGET_URL

示例代码

1
const axios = require('axios')
2
3
const host = process.env.PRIVATE_HOST || 's1.ip.16yun.cn'
4
const port = process.env.PRIVATE_PORT || '39010'
5
const user = process.env.PRIVATE_USERNAME || process.env.PRIVATE_USER
6
const pass = process.env.PRIVATE_PASSWORD || process.env.PRIVATE_PASS
7
const target = process.env.TARGET_URL || 'https://httpbin.org/ip'
8
const base = (process.env.PRIVATE_BASE || 'http://s1.ip.16yun.cn:887').replace(/\/$/, '')
9
10
if (!user || !pass) {
11
throw new Error('缺少 PRIVATE_USERNAME/PRIVATE_PASSWORD')
12
}
13
14
async function main() {
15
for (const path of ['current-ip', 'switch-ip', 'update']) {
16
const url = `${base}/simple/${path}?username=${encodeURIComponent(user)}&password=${encodeURIComponent(pass)}`
17
const resp = await axios.get(url, { timeout: 15000 })
18
console.log(path, resp.status, resp.data)
19
}
20
21
const resp = await axios.get(target, {
22
proxy: {
23
protocol: 'http',
24
host,
25
port: parseInt(port, 10),
26
auth: { username: user, password: pass },
27
},
28
timeout: 15000,
29
})
30
31
console.log(resp.status, resp.data)
32
}
33
34
main().catch((error) => {
35
console.error(error.message)
36
process.exit(1)
37
})

适合什么情况

  • 你使用 Node.js 脚本或服务接入独享代理
  • 你想快速确认 axios 的代理配置
  • 你需要一个最小可运行的 JavaScript 示例

相关入口