指南
如何在 cURL、Python 和 Node.js 中使用 HTTP 或 SOCKS5 代理
IPronix 编写 · 更新于
所有 IPronix 代理都使用用户名和密码认证。住宅、移动和数据中心网关各有一个 HTTP 端口和一个 SOCKS5 端口;静态 ISP IP 同一时间只能运行 HTTP 或 SOCKS5 其中一种协议(可在订单页面切换,IP 和端口保持不变)。静态 ISP 代理列在“我的代理”(My Proxies)中;住宅、移动和数据中心流量通过网关主机转发,您的定位设置(国家、地区、城市、会话)会写入凭据中,或写入在控制面板中生成的端点列表。以下示例使用文档专用地址 203.0.113.10 和占位凭据,请替换为您自己的信息。
1. 构建代理 URL
大多数工具都接受一个完整的代理 URL:协议、凭据、主机和端口。HTTP 端口使用 http://,SOCKS5 端口使用 socks5h://(流量网关的两个端口不同;静态 ISP IP 需先切换协议,再使用同一端口)。socks5h 中的 h 表示由代理解析 DNS,因此目标主机名不会泄露给您本地的解析器。
http://USER:PASS@203.0.113.10:8000
socks5h://USER:PASS@203.0.113.10:8001如果密码包含 @、: 或 / 等字符,请先对其进行 URL 编码(JavaScript 中使用 encodeURIComponent,Python 中使用 urllib.parse.quote)。
2. cURL
# HTTP proxy
curl -x http://USER:PASS@203.0.113.10:8000 https://api.ipify.org?format=json
# SOCKS5 proxy (DNS resolved by the proxy)
curl -x socks5h://USER:PASS@203.0.113.10:8001 https://api.ipify.org?format=json响应会显示网站看到的 IP 地址。它应当是代理的 IP,而不是您自己的 IP。
3. Python(requests)
import requests
proxy = "http://USER:PASS@203.0.113.10:8000"
proxies = {"http": proxy, "https": proxy}
r = requests.get("https://api.ipify.org?format=json", proxies=proxies, timeout=30)
print(r.json())如需使用 SOCKS5,请安装 SOCKS 扩展并更改协议:
# pip install "requests[socks]"
proxy = "socks5h://USER:PASS@203.0.113.10:8001"
proxies = {"http": proxy, "https": proxy}4. Node.js(axios)
import axios from "axios";
import { HttpsProxyAgent } from "https-proxy-agent";
const agent = new HttpsProxyAgent("http://USER:PASS@203.0.113.10:8000");
const { data } = await axios.get("https://api.ipify.org?format=json", {
httpsAgent: agent,
proxy: false, // let the agent handle the proxy
});
console.log(data);如需使用 SOCKS5,请改用 socks-proxy-agent:
import { SocksProxyAgent } from "socks-proxy-agent";
const agent = new SocksProxyAgent("socks5h://USER:PASS@203.0.113.10:8001");
const { data } = await axios.get("https://api.ipify.org?format=json", {
httpAgent: agent,
httpsAgent: agent,
proxy: false,
});5. 常见错误排查
- 407 Proxy Authentication Required:用户名或密码错误,或密码中的特殊字符未进行 URL 编码。
- 连接立即被拒绝或重置:端口与协议不匹配,例如把 SOCKS5 URL 指向了 HTTP 端口。请复制与您所用协议对应的端口。
- 流量产品返回 407:请检查是否完整复制了密码,包括密钥后面的定位部分;不受支持的国家、地区或城市会被拒绝。
- 流量请求停止工作:套餐流量可能已用完。请在控制面板中查看剩余流量并购买更多流量。
- 静态 ISP IP 显示为待分配:IP 仍在分配中,准备就绪后会显示在订单中。
对于静态 ISP 代理,您还可以使用订单页面上的 ping 按钮检查代理是否响应并查看其延迟。