用 curl 和 Python 调用 IPRoyal 住宅代理

用 curl 命令和 Python requests 通过 IPRoyal 住宅代理发请求,含指定国家、粘性会话、SOCKS5 写法和常见报错排查。

配置阅读约 6 分钟更新于

本页目录(5 节)

写脚本采集数据时,把 IPRoyal 住宅代理填进 HTTP 客户端就能用。下面的示例基于 IPRoyal 官方文档的格式,把 username123password321 换成你后台 Connection 区域里的用户名和密码即可。

一、先用 curl 测一次

先用 curl 确认代理能连通。下面这条命令通过美国加州的住宅 IP 访问一个返回 IP 的网址:

curl -v -x http://username123:password321_country-us_state-california@geo.iproyal.com:12321 -L https://ipv4.icanhazip.com

输出的 IP 就是出口 IP。多执行几次,每次 IP 都不同,说明轮换生效。

SOCKS5 只需要换协议前缀和端口:

curl -v -x socks5://username123:password321_country-us_state-california@geo.iproyal.com:32325 -L https://ipv4.icanhazip.com

还没有账号?去官网注册并买 1GB 流量 →

二、Python requests

import requests

USER = "username123"
PASS = "password321_country-us"   # 参数直接接在密码后面
HOST = "geo.iproyal.com:12321"

proxy = f"http://{USER}:{PASS}@{HOST}"
proxies = {"http": proxy, "https": proxy}

r = requests.get("https://ipv4.icanhazip.com", proxies=proxies, timeout=30)
print(r.text.strip())

用 SOCKS5 时先安装 pip install "requests[socks]",再把地址改成 socks5h://…@geo.iproyal.com:32325socks5h 表示 DNS 也在代理端解析。

三、保持同一个 IP(粘性会话)

采集需要登录、或者要翻页的网站时,同一批请求最好用同一个 IP。在密码后加 _session-_lifetime-

import random, string

session_id = "".join(random.choices(string.ascii_lowercase + string.digits, k=8))
PASS = f"password321_country-gb_session-{session_id}_lifetime-10m"

会话 ID 必须是 8 位字母数字,时长只能写一个单位(如 10m1h),最长 7 天。换一个 session_id 就换一个 IP。

四、常见报错

  • 407 Proxy Authentication Required:用户名或密码错。注意密码后面的参数也要拼对,下划线不能漏。
  • 连接超时:先用 curl 测同一条代理。国内网络直连 SOCKS5 可能不稳定,可以换 HTTP 端口,或把脚本放到海外服务器上跑。
  • 目标网站返回验证码或 403:换国家、降低请求频率,或者改用 Web Unblocker。
  • 部分网站始终连不上:未实名认证的账户会被限制访问部分域名和端口,见实名认证教程

五、省流量的小习惯

住宅代理按 GB 计费。脚本里只请求需要的页面和接口,不下载图片、字体、视频;能用 API 接口拿 JSON 的,就不要抓整个网页。用量可以在后台 My Statistics 按网站查看,找出最费流量的目标。

查看官网当前价格与活动

退款规则:购买后 24 小时内服务无法正常使用、且客服当天无法解决,可申请全额退款;住宅代理订阅在续费后 72 小时内、新流量未使用可退。1 天套餐和加密货币付款不退。以 IPRoyal 服务条款第 6.9 条为准。