Python
requests,httpx,aiohttp,异步并发
文档 · 网关、用户名格式、会话、错误及限制
发送首个请求所需全部信息及后续参考资料:定向参数、会话规则、错误代码及限制说明。
快速回答
如何连接到 CrawlRelay 代理?
将任意 HTTP 客户端指向 http://USERNAME:[email protected]:7777,或 SOCKS5 指向端口 7778。CrawlRelay 是面向开发者的住宅代理服务,用户名读入定向和会话信息:USERNAME-country-us-city-new_york-session-job1-ttl-30。住宅流量 1 GB 收费 US$1.50,50 GB 起是 US$0.50/GB。支持加密货币支付,无需 KYC。
| 网关主机 | gw.crawlrelay.com |
|---|---|
| HTTP / HTTPS 端口 | 7777(通过 CONNECT 访问 HTTPS 网站) |
| SOCKS5 端口 | 7778(使用 socks5h:// 以使 DNS 在出口处解析) |
| 身份验证 | 您的计划或子用户的用户名和密码,或 IP 允许列表(最多 10 个 IP) |
| 用户名格式 | USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes} |
| 会话长度 | 最长支持 30 分钟持续时长;IP 可能会提前更换 |
| 测试网址 | https://api.ipify.org 以纯文本返回出口 IP |
| 管理 API | https://crawlrelay.com/api/v1,支持随时撤销的 API 密钥(API 文档) |
从您的控制面板复制用户名和密码,然后运行下面的任一命令。每个命令都会打印网站看到的 IP 地址,该地址通常每次运行时都会改变。
curl -x http://USERNAME-country-us:[email protected]:7777 https://api.ipify.orgimport requests
proxy = "http://USERNAME-country-us:[email protected]:7777"
r = requests.get("https://api.ipify.org", proxies={"http": proxy, "https": proxy}, timeout=(10, 30))
print(r.text)import { ProxyAgent, fetch } from "undici";
const dispatcher = new ProxyAgent("http://USERNAME-country-us:[email protected]:7777");
const res = await fetch("https://api.ipify.org", { dispatcher });
console.log(await res.text());从控制面板中的用户名开始,依上面格式顺序用连字符附加参数。每个参数都是可选的。值为小写,城市名称用下划线表示(new_york,sao_paulo)。城市可用性不同。
| 目标 | 用户名 |
|---|---|
| 任意国家,连接时会轮换 | USERNAME |
| 德国 | USERNAME-country-de |
| 巴黎 | USERNAME-country-fr-city-paris |
| 得克萨斯 | USERNAME-country-us-state-tx |
| 一个邮政编码 | USERNAME-country-us-zip-10001 |
| 一个互联网提供商 | USERNAME-country-us-asn-7922 |
| 最长 30 分钟保持同一 IP | USERNAME-country-gb-session-abc123-ttl-30 |
如果您的密码包含 @、: 或 /,请先对其进行 URL 编码后再放入代理 URL。有关操作方法,请参见407 错误页面]。
不带 session- 的用户名在每次新建 TCP 连接时从代理池获取一个 IP,通常不同;带 session-<id>-ttl-<minutes> 的用户名则保持该 ID 的出口 IP 不变,直到 TTL 结束或住宅设备离线。
会话指南]详述各库中的连接复用。
先确定响应者是谁:网关,还是其背后的网站。
| 您会看到 | 发送方 | 常见原因 | 该怎么办 |
|---|---|---|---|
| 407 | 网关 | 错误或未编码的凭据 | 修正用户名或密码;切勿盲目重试 |
| ERR_TUNNEL_CONNECTION_FAILED | 浏览器 | 连接被拒绝(通常是隐藏的407) | 将凭据作为字段传递,而非在服务器URL中 |
| 502 / 504 | 网关或CDN问题 | 出口节点断开,目标响应慢或宕机 | 在新连接上重试,设定最大重试次数 |
| 403 | 网站 | 国家、头信息、速率错误或请求被拒绝 | 在浏览器中检查;放慢速率或尊重拒绝响应 |
| 429 | 网站 | 速率限制 | 遵守Retry-After;降低每主机并发量 |
| SSL: WRONG_VERSION_NUMBER | 您的客户端 | 代理URL前的https:// | 使用http://作为代理URL |
所有15条目均在错误参考中。
在控制面板或通过REST API(地址为https://crawlrelay.com/api/v1)使用API密钥管理。支持随时撤销的 API 密钥。主要功能:
CrawlRelay发布了包含Python(requests、httpx、aiohttp)、Scrapy、Playwright、Puppeteer、Selenium、Node.js和curl的复制粘贴指南,参考15的代理错误和包含curl、Python及Node.js样例的REST API参考。所有示例均使用真实的网关主机和端口,且发布前经语法校验。
不需要。用户名与密码认证适用于任何设备,因此您可以在笔记本、服务器或CI运行器上运行相同的爬虫。如果愿意,可添加最多10个IP到白名单。建议将凭据保存在环境变量或秘密管理中,切勿放入代码库。
要么您的用户名包含会话 ID,这会特意保持一个 IP 地址不变,要么您的客户端重用了一个保持活动状态的连接。旋转是基于每个新连接发生的。请移除会话部分,或者如会话指南]所示,为每个请求打开一个新连接。
对于网页抓取,请使用 HTTP 端口(7777):每个库和浏览器都支持带认证的 HTTP 端口,且 HTTPS 站点通过 CONNECT 隧道访问。对于只支持 SOCKS 协议的工具,使用 SOCKS5(7778)且配合 socks5h:// 以便 DNS 在出口解析。
通过代理请求 https://api.ipify.org 来获取 IP 地址,然后在您信赖的地理位置数据库中查询。数据库对某些 IP,尤其是移动 IP,可能有不同的判断,因此请同时检查目标网站提供的内容:货币、语言和本地结果,这些才是对您的数据真正有意义的。
套餐按 GB 计费,不按请求次数计费,您最先遇到限制的是目标网站本身。请分别控制每个目标的请求频率,并在遇到 429 和 503 响应时降低频率。如果您计划进行非常大的爬取,先联系支持 [email protected]。
从 US$0.50/GB 开始 · 无需 KYC
开始使用