写脚本采集数据时,把 IPRoyal 住宅代理填进 HTTP 客户端就能用。下面的示例基于 IPRoyal 官方文档的格式,把 username123 和 password321 换成你后台 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:32325。socks5h 表示 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 位字母数字,时长只能写一个单位(如 10m、1h),最长 7 天。换一个 session_id 就换一个 IP。
四、常见报错
- 407 Proxy Authentication Required:用户名或密码错。注意密码后面的参数也要拼对,下划线不能漏。
- 连接超时:先用 curl 测同一条代理。国内网络直连 SOCKS5 可能不稳定,可以换 HTTP 端口,或把脚本放到海外服务器上跑。
- 目标网站返回验证码或 403:换国家、降低请求频率,或者改用 Web Unblocker。
- 部分网站始终连不上:未实名认证的账户会被限制访问部分域名和端口,见实名认证教程。
五、省流量的小习惯
住宅代理按 GB 计费。脚本里只请求需要的页面和接口,不下载图片、字体、视频;能用 API 接口拿 JSON 的,就不要抓整个网页。用量可以在后台 My Statistics 按网站查看,找出最费流量的目标。