爬虫代理(隧道)开发指南
1. 接入准备
获取示例代码
请前往 代码示例&SDK下载,选择适合的语言库及版本。示例代码中附有详细注释,可直接复制并运行测试。
获取代理参数
登录后台后,进入“当前代理”页面,从订单详情中获取以下 4 个参数,并配置到示例代码中。
代理参数
域名
代理入口地址
代理参数
端口
代理服务端口
代理参数
用户名
代理认证账号
代理参数
密码
代理认证密码
NOTE
登录后台后,进入“当前代理”页即可查看域名、端口、用户名和密码。如无订单,请 开通测试订单。
2. 核心功能
保持 IP / 切换 IP
这一部分解决的是“多个请求是否要继续使用同一个代理 IP”以及“何时切换 IP”的问题,适合需要登录、Cookie 维持或按请求组控制出口 IP 的业务。
Loading diagram...
适合需要在一个会话里保持同一出口 IP 的场景,例如登录、Cookie 维持、分步骤抓取。
关键规则
- 每个新的 TCP 请求会重新分配代理 IP,但同一个 TCP 会话中的代理 IP 保持不变。
- 访问
HTTPS目标时,通常默认会维持会话,因此更容易保持同一代理 IP。 - 如果需要每个请求都强制切换 IP,应避免长连接持续复用。
阅读提示
- 想保持同一个 IP:尽量让一组请求运行在同一个 KeepAlive 会话内。
- 想强制切换 IP:设置
Proxy-Connection: Close和Connection: Close,并关闭连接池复用。
用户密码认证
这一部分解决的是“如何正确把账号密码带到代理请求里”,适用于需要显式配置代理认证的 SDK、HTTP 客户端或自定义请求程序。
- 爬虫代理通过用户名和密码进行身份认证,最终会转换为
Proxy-Authorization请求头。 - 如果用户认证信息错误,系统通常会返回
401 Unauthorized或407 Proxy Authentication Required。
Loading diagram...
关键规则
- 优先使用 SDK 或 HTTP 库自带的代理认证方式。
- 如果库不支持直接配置用户名和密码,可手动设置
Proxy-Authorization: Basic <base64>。 <base64>为“用户名:密码”拼接后再进行 Base64 编码得到的字符串。
阅读提示
- 不要把代理认证头写成
Authorization,否则可能继续发送给目标网站。 - 访问 HTTPS 目标时,更推荐使用库原生的代理认证配置。
- 如果代理域名解析失败,优先用
223.5.5.5或运营商 DNS 做测试。
3. 运行与限制
这一部分说明接入成功后的常见运行结果和限制边界,便于快速判断程序当前处于“正常返回”“认证失败”还是“频率过高”状态。
| 运行结果 | 含义 | 优先动作 |
|---|---|---|
| 200 | 请求成功 | 继续验证业务逻辑是否符合预期。 |
| 407 | 代理认证失败 | 优先检查域名、端口、用户名、密码和代理认证方式。 |
| 429 | 请求速率过高 | 降低请求频率,确认不超过订单上限(5-300 次/秒,以订单配置为准)。 |
NOTE
- 使用稳定的服务器网络环境,避免出口 IP 频繁变化。
- 在调试阶段优先使用示例代码和最小请求量验证代理链路。
- 检测代理是否生效时,先访问 IP 查询类网站判断出口 IP 是否已变化。
4. 故障排查
先按现象或报错定位问题,再执行对应动作。若流程图定位后仍未解决,请继续查看 HTTP错误码表 或联系 。
Loading diagram...
第一步:用 curl 验证代理链路
先确认代理链路本身是否通畅,再继续排查业务代码。
1#!/bin/bash2curl -x http://username:password@ip:port http://httpbin.org/ip
排查动作
返回 407,说明认证失败
- 优先检查域名、端口、用户名、密码是否与后台一致。
- 确认所用库是否真正把代理认证配置到了
Proxy-Authorization,而不是Authorization。
返回 429,说明请求频率过高
- 降低请求速率,避免超过订单限制。
- 多线程/多进程场景下,应按“总请求量”而不是单线程速率计算。
代理配置完成,但 IP 没变化
- 通过 IP 查询类网站检查出口 IP 是否变化。
- 若返回 IP 与本地相同,通常说明请求没有真正走代理,或代理参数未被程序正确加载。
HTTPS 请求异常,但 HTTP 正常
- 优先检查代理认证方式是否由 SDK 或 HTTP 库原生支持。
- 再检查是否因 KeepAlive、连接池复用或
connect阶段未携带必要头导致行为异常。
5. 常见问题
程序能发请求,但一直返回 407
- 这通常不是目标网站报错,而是代理认证失败。
- 请优先核对四个代理参数,并确认代码是否真的发送了代理认证信息。
程序可以运行,但偶尔出现少量非 200 状态
- 少量异常状态通常属于正常网络波动或目标网站波动,不一定代表代理失效。
- 如果错误持续集中出现,再按上面的排查流程和错误码表继续定位。
代理链路能通,但程序运行中仍然中断
- 建议在网络请求、数据解析和存储阶段补充异常保护机制。
- 如果是长时间运行任务,还应记录请求日志、状态码和重试策略,避免把偶发错误放大成整体中断。
需要进一步分析错误码
- 若流程图已帮你定位到具体状态码,但仍不确定原因,请继续查看 HTTP错误码表。