爬虫代理(隧道)开发指南

阅读模式

1. 接入准备

获取示例代码

请前往 代码示例&SDK下载,选择适合的语言库及版本。示例代码中附有详细注释,可直接复制并运行测试。

NOTE

如果你还没拿到域名、端口、用户名和密码,请先查看 快速入门爬虫代理提取

获取代理参数

登录后台后,进入“当前代理”页面,从订单详情中获取以下 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: CloseConnection: Close,并关闭连接池复用。

用户密码认证

这一部分解决的是“如何正确把账号密码带到代理请求里”,适用于需要显式配置代理认证的 SDK、HTTP 客户端或自定义请求程序。

  • 爬虫代理通过用户名和密码进行身份认证,最终会转换为 Proxy-Authorization 请求头。
  • 如果用户认证信息错误,系统通常会返回 401 Unauthorized407 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/bash
2
curl -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错误码表