Proxy 端口
通过任何支持 proxy URL 的客户端(浏览器、下载工具或您现有的爬虫),将您自己的流量经由 FourA 的出口节点发送。该 proxy 端口会建立通往指定目标的隧道并进行双向字节转发,因此它支持 JSON API 所不涵盖的场景:流传输、大文件下载以及完整的浏览器会话。
Beta。 该 proxy 端口当前处于测试阶段。通过它的流量暂不计费,不受监控或正常运行时间承诺的保障,且选项名称仍可能发生变更。如有异常请向我们反馈。
连接
| 设置 | 值 |
|---|---|
| Host | proxy.foura.ai |
| Port | 34004 |
| Protocol | HTTP CONNECT(含 Basic 认证) |
| 目标端口 | 443 与 80 |
凭据从控制台获取。在侧边栏的 Proxy 下创建 proxy 用户,即可获得生成的用户名和密码。它们特意与您的 API key 分离:proxy 握手在每次连接时均以明文传输,且轮换 proxy 用户不会影响您的 API 集成。请参阅 Proxy Users。
curl -x http://USERNAME:PASSWORD@proxy.foura.ai:34004 https://example.com
import requests
proxy = "http://USERNAME:PASSWORD@proxy.foura.ai:34004"
r = requests.get("https://example.com", proxies={"https": proxy, "http": proxy})
print(r.status_code)
该端口仅支持 CONNECT。所有客户端都会对 https:// 目标进行隧道传输。普通 http:// 目标在客户端同样对其进行隧道传输时可用(curl:--proxytunnel);若客户端将普通 request 直接转发给 proxy,则会收到 405 Method Not Allowed。
选项包含在用户名中
凭据之后的所有内容均为 -key-value 键值对列表,顺序任意:
USERNAME-network-residential-country-de-session-a1
参数值为小写单词。值中的短划线会启动一个新选项,因此 -city-new-york 会被解析为两个选项并被拒绝。未知的键也会被拒绝,绝不会被静默忽略:拼写错误的 -contry-de 会返回 400 错误并列出支持的键,而不是从错误的国家提供服务。
| 选项 | 取值 | 功能说明 |
|---|---|---|
network |
shared(默认,别名 pool),residential |
地址所属网络。Shared 为 FourA 自有出口,包含在套餐中。Residential 为家庭宽带地址,消耗套餐包含的高级流量及额外购买的流量。 |
fallback |
residential, off |
仅限共享网络。当共享网络无法处理请求时切换至住宅出口。默认关闭,仅在套餐包含高级流量且额度充足时触发。 |
country |
ISO 3166-1 alpha-2,可重复 | 目标端看到的出口国家。重复使用可指定多国范围:-country-de-country-fr。 |
session |
1 到 32 个字母、数字或下划线 | 共享相同名称的连接将使用同一地址 (sticky)。省略此项则每次连接分配新地址 (rotating)。 |
state |
单词 | 地区。仅限住宅网络。 |
city |
单词 | 城市。仅限住宅网络。 |
asn |
数字 | 网络,按 AS 号指定。仅限住宅网络。 |
os |
windows, android, ios, mac |
地址所属的设备类型。仅限住宅网络。 |
lifetime |
3 到 1440 |
保持住宅粘性地址的分钟数。仅限住宅网络。 |
除 network、fallback 和 session 外,所有选项均支持 any,用于清除 proxy 用户上为本次连接保存的对应值。
以下三种组合将直接返回 400 拒绝,而非部分生效:
- 在共享网络上使用
state、city、asn、os或lifetime。共享网络仅支持按国家定位,不支持更细粒度;定位到城市请添加-network-residential。 - 同时使用
-fallback-residential和-network-residential。回退机制在其所回退的目标网络上毫无意义。 - 在启用回退时配置更细粒度的定位。回退不一定会触发,因此只能偶尔满足的城市定位会被拒绝。
会话
在共享网络上,只要持续使用,具名会话将在 10 分钟滑动窗口内保持同一出口。若该出口不可用,会话将自动切换至其他出口而非直接失败。通过代理端口控制的浏览器应始终携带会话名称:单次页面加载会发起数十个连接,若无会话,每个连接都会使用不同地址。
在住宅网络上,具名会话将保持其地址 lifetime 分钟,未设置时使用网络默认值。
保存的默认设置
在控制台中为 proxy 用户保存的定位配置适用于通过该用户建立的每个连接,因此 username 可以保持简短。在 username 中指定的任何参数仅在当前连接中优先,而 any 会恢复已保存的值。已保存的住宅代理默认值仅在套餐允许时产生费用;否则连接将通过共享网络提供。
CONNECT header
支持在 CONNECT request 中添加 header 的客户端可以将相同的选项作为 header 发送。header 的优先级高于 username 中的相同选项。
| Header | 等同于 |
|---|---|
X-Foura-Network |
-network- |
X-Foura-Fallback |
-fallback- (residential 或 off) |
X-Foura-Country |
-country-,多个值用逗号分隔 |
X-Foura-Session |
-session- |
X-Foura-State |
-state- |
X-Foura-City |
-city- |
X-Foura-Asn |
-asn- |
X-Foura-Lifetime |
-lifetime- |
curl -x http://USERNAME:PASSWORD@proxy.foura.ai:34004 \
--proxy-header "X-Foura-Country: de" \
https://example.com
Responses
成功建立的 tunnel 会返回 200 Connection established。每次拒绝都会附带一个包含单行原因的 X-Foura-Error header,因此请优先读取该 header。
| Status | When |
|---|---|
| 400 Bad Request | 格式错误的 request,或者 FourA 无法支持的选项。X-Foura-Error 会明确指出该选项及支持的值。 |
| 403 Forbidden | 目标端口未提供服务,或者目标不是公共互联网主机。 |
| 405 Method Not Allowed | 发送了普通 request 而非 CONNECT。 |
| 407 Proxy Authentication Required | 凭据缺失或错误。响应从不指明具体哪一部分错误。 |
| 408 Request Timeout | 客户端已连接但 15 秒内未发送任何内容。 |
| 429 Too Many Requests | 该 proxy 用户已打开 200 个 tunnel,或者端口已达到其容量或创建速率上限。 |
| 502 Bad Gateway | 在选择预算时间内未找到适用于该目标且可用的出口,或者 FourA 自身的解析器无法解析该主机。这两种情况在 X-Foura-Error 中对应不同的消息。 |
| 503 Service Unavailable | proxy 端口已关闭。 |
Limits
- 每个 proxy 用户最多同时打开 200 个 tunnel。
- 查找出口最多耗时 45 秒,超时后端口将放弃并返回 502。已有出口的 session 通常在 1 秒以内即可连接。
- 双向均无字节传输的 tunnel 将在空闲 2 分钟后关闭。
- 在控制台中禁用或删除的 proxy 用户将在 1 分钟内停止鉴权。
Metering
通过该端口的字节数会计入 Usage & Limits 页面中的带宽,通过住宅代理出口的字节数也会同时计入您的高级流量配额。在高级流量配额用尽后指定 -network-residential 的连接仍会被处理;在该状态下不会使用 fallback 或已保存的住宅代理默认设置,而是由共享网络处理该连接。
Related
- Proxy Users: 在控制台中创建 proxy 用户并构建连接字符串
- Proxy Request: JSON API 替代方案,内置重试与验证
- Reuse a Proxy Across Requests: 在 JSON API 上保留同一个出口
- Usage & Limits: 套餐对应的带宽与高级流量