本文中提到的每家轮换住宅代理服务商都提供相同的基本接口:一个反向连接端点、用于身份验证的用户名和密码,以及通过用户名字符串传递会话和地理位置参数的方式。一旦掌握了这一模式,更换服务商主要只需修改配置,而非重写代码。
支持 HTTP 基本认证的回连端点(Python)。
import requests
proxy = "http://USER-country-us-session-abc123:PASS@gw.provider.example:8000"
proxies = {"http": proxy, "https": proxy}
r = requests.get("https://example.com", proxies=proxies, timeout=30)
print(r.status_code, r.text[:200])
该 country-us 和 session-abc123 段是大多数提供商使用的用户名参数。移除会话 ID 即可实现按请求轮换。若在不同请求中保持相同的会话 ID,网关将使您在会话生命周期内(通常为 10 至 30 分钟,IPRoyal 等提供商最长可达 7 天)绑定到一个 IP 地址。
使用 axios 的 Node.js 方案。
const axios = require("axios");
const HttpsProxyAgent = require("https-proxy-agent");
const proxyUrl =
"http://USER-country-de-session-xyz:PASS@gw.provider.example:8000";
const agent = new HttpsProxyAgent(proxyUrl);
const res = await axios.get("https://example.com", { httpsAgent: agent });
console.log(res.status, res.data.slice(0, 200));
无头浏览器的使用。Playwright 和 Puppeteer 均支持在启动选项中配置代理。若需实现粘性会话,应按浏览器上下文(而非按请求)生成唯一的会话 ID,这样整个导航过程在数秒的流程中看起来就像是同一个用户:
const browser = await chromium.launch({
proxy: {
server: "http://gw.provider.example:8000",
username: "USER-country-fr-session-sess1",
password: "PASS",
},
});
实用模式。针对搜索结果页面(SERP)和无状态抓取,按请求轮换 IP;登录、购物车和分页操作则使用粘性会话;当响应实际取决于地理位置时(如搜索、广告投放、区域定价产品),固定地理位置;并始终将轮换 IP 与真实的请求头和请求时序相结合,以免流量呈现固定且可疑的模式。 HTTP 代理认证的标准详见 RFC 7235,若需调试 407 响应,建议通读该文档。
对于比这更复杂的场景,包括在 Python 中使用带重试/退避机制和 IP 质量评分的轮换代理,其模式在各提供商间具有通用性,且集成成本主要取决于您的错误处理机制,而非代理库本身。只需构建一次重试层,将提供商封装在配置对象中,您就能通过更改一个环境变量来切换供应商。