跳到正文

API 文档

通过 HTTP 控制您的代理:更换 IP、重启线路、读取短信、设置系统指纹。包括接口、响应、限制和示例。

update 更新于

快速开始

API 每次只操作一个代理:即您发送其用户名和密码的那个代理。

  • 基础地址: https://frproxy.com
  • 身份验证: Basic Auth,使用代理的用户名和密码,而不是您账户的。它们显示在 我的代理 中。
  • 响应格式: JSON。

第一个调用,用于更换代理的 IP:

curl -X POST -u "USER:PASS" https://frproxy.com/api/v1/rotate

请将 USER 和 PASS 替换为您代理的凭据。

接口列表

方法 路径 作用
GET 或 POST /api/v1/rotate 更换代理的 IP
GET 或 POST /apix/<port>/<token> 用短链接更换 IP,无需凭据
POST /api/v1/reboot 重启线路
GET /api/v1/sms 读取收到的短信
POST /api/v1/spoof 选择系统指纹
GET 或 POST /api/v1/wg-rotate 更换 WireGuard 隧道的 IP

身份验证

每个请求都通过 Basic Auth 携带代理的用户名和密码。使用 curl 时是 -u 选项;使用 Python 的 requests 库时是 auth 参数。

curl -u "USER:PASS" https://frproxy.com/api/v1/sms
  • 在 我的代理 中修改代理密码后,API 的密码也会立即随之改变。
  • 已过期的代理无法再控制:API 返回 403。
  • 凭据也可以写在地址中:https://USER:PASS@frproxy.com/api/v1/rotate。部分浏览器和工具不接受这种写法;下文介绍的短链接则不需要它。

更换 IP

GET 或 POST /api/v1/rotate

代理的移动线路重新连接网络,并从运营商获得新的 IP。响应会立即返回,轮换在后台继续进行,通常需要十秒左右。在此期间,代理不响应,正在进行的连接会被切断。

curl -X POST -u "USER:PASS" https://frproxy.com/api/v1/rotate

响应:

{
  "success": true,
  "status": "rotation started — 轮换已启动 — ротация запущена",
  "wait_sec": 30,
  "retry_after": 30
}
字段 含义
success true:轮换已启动。
status 说明信息,包含英文、中文和俄文。请勿在脚本中依赖它。
wait_sec 使用新 IP 之前需要等待的秒数。
retry_after 再次请求轮换之前需要等待的秒数。

接受 GET,是为了一个普通链接就能触发轮换:浏览器、书签或工具都可以。响应中不包含新 IP;如需查看,请见下文“查看新 IP”。

基础版代理

基础版代理与其他代理共用一条线路。同一接口只为该代理分配新 IP,不影响线路,也不影响其他代理。响应会等到 IP 就绪后才返回,并附上该 IP:

{
  "success": true,
  "status": "new ip assigned — 已分配新 IP — назначен новый IP",
  "ip": "203.0.113.42",
  "wait_sec": 0,
  "retry_after": 86400
}
  • 每个代理每 24 小时可获得一次新 IP。期限未到时,API 返回 429,并给出剩余时间。
  • 如果分配超过 55 秒,响应为 202,status 为“new ip in progress”:IP 稍后即到。
  • 基础版代理在 我的代理 中没有短链接:请使用此接口。

短链接

GET 或 POST /apix/<port>/<token>

同样的 IP 更换,但地址中不含用户名和密码。链接可以原样粘贴到浏览器、书签或工具中。

curl https://frproxy.com/apix/15002/a1b2c3d4e5f6
  • 每个代理的链接位于 我的代理 中的“轮换”标签后,也显示在您账户的 API 页面上。
  • 响应和限制与 /api/v1/rotate 相同。
  • 该令牌只能更换此代理的 IP:它既不能访问代理本身,也不能访问您的账户。但仍请妥善保管:持有者可以随时更换您的 IP。
  • 修改代理密码时,它不会改变。

查看新 IP

轮换不会返回所获得的 IP(基础版代理除外)。如需查看,请通过代理本身访问一个 IP 查询服务:

curl -x http://USER:PASS@frproxy.com:15002 https://api64.ipify.org

请将 15002 替换为您代理的 HTTP 端口。该命令显示网站看到的地址,视线路而定为 IPv4 或 IPv6。更多方法见测试您的代理。

重启线路

POST /api/v1/reboot

重启承载代理线路的设备(调制解调器或手机)。这是代理无响应时的补救办法。如果只是想更换 IP,轮换就够了,中断时间也更短。

curl -X POST -u "USER:PASS" https://frproxy.com/api/v1/reboot

设备收到指令后的响应:

{
  "status": "ok"
}

如果指令超过 40 秒仍未完成,API 不再等待,直接返回 202,重启会自行完成:

{
  "status": "pending",
  "message": "The restart is under way and continues on the device (up to 2 minutes for a phone)."
}
  • 线路通常需要一到两分钟才能恢复。如果没有恢复,请等待 10 分钟后再试:连续重启并不能让它更快恢复。
  • 基础版代理不可用(403):线路是共用的,重启会切断其他代理。
  • 重启与轮换之间的间隔见下文“限制”。

读取短信

GET /api/v1/sms

返回自该代理分配给您以来,代理 SIM 卡收到的短信。此前收到的短信不会返回。

curl -u "USER:PASS" https://frproxy.com/api/v1/sms

响应:

[
  {
    "Index": "3",
    "Phone": "+33612345678",
    "Content": "Your verification code is 481920",
    "Date": "2026-10-27 14:05:12"
  }
]
字段 含义
Index 短信在 SIM 卡上的编号。
Phone 发送方:一个号码,或“Orange”这样的短名称。
Content 短信内容。
Date 接收时间,格式为 YYYY-MM-DD HH:MM:SS,巴黎时间。
  • 字段名以大写字母开头。
  • 如果您的代理未开通短信功能,列表为空:[]。

选择系统指纹

POST /api/v1/spoof?os=<value>

使连接的 TCP/IP 指纹(TTL、窗口和 TCP 选项)与您浏览器声明的系统保持一致。HTTP 标头不会被修改。原理见 TCP 系统伪装。

curl -X POST -u "USER:PASS" "https://frproxy.com/api/v1/spoof?os=windows"

响应:

{
  "status": "ok",
  "os": "windows"
}
os 的值 指纹
windows Windows
macos macOS
linux Linux
android Android
ios iOS
留空(os=) 无:设备的原始指纹
  • os 也可以作为表单字段放在请求正文中发送。大小写均可。
  • 该设置作用于整条线路:如果多个代理共用这条线路,最后一次设置对所有代理生效。
  • 仅当您的套餐包含此功能时可用;否则 API 返回 403。

WireGuard 隧道

GET 或 POST /api/v1/wg-rotate

每条 WireGuard 隧道都有自己的轮换链接,位于 我的代理 中该隧道的卡片上。用户名是 wg 加上隧道编号,密码是隧道的令牌:

curl -u "wg12:TOKEN" https://frproxy.com/api/v1/wg-rotate
  • 响应和限制与代理轮换相同。
  • 随代理一起出售的隧道与该代理使用同一条线路:更换其中一个的 IP,另一个也会随之改变。
  • 如果承载隧道的代理已过期,API 返回 403。

限制

操作 限制
更换 IP 每个代理每 30 秒 1 次,面板、API 和短链接合并计算
基础版代理的新 IP 每个代理每 24 小时 1 次
重启线路 每 5 分钟 1 次
读取短信 每分钟 100 次
选择系统指纹 每分钟 10 次

另有两条规则保护线路,无论请求来自哪个代理:

  • 轮换进行期间及其后 2 分钟内,不能重启;
  • 重启后 5 分钟内不能轮换,线路恢复之前也不能(最多 10 分钟)。

连续轮换和重启,会让线路中断的时间比单独任何一项都长。

请求被拒绝时返回 429,并带有 Retry-After 标头:即重试前需要等待的秒数。被拒绝的请求不消耗任何额度。

响应代码

代码 含义 处理方法
200 成功。 无需处理。
202 已接受:操作在后台继续进行。 稍候,然后检查。
400 参数无效,例如未知的 os 值。 修正请求。
401 凭据缺失或错误,或短链接未知。 检查代理凭据,或重新复制链接。
403 代理已过期、套餐不含此功能,或此代理不支持该操作。 续费代理,或改用其他操作。
404 短链接格式错误。 从 我的代理 重新复制链接。
405 不接受该 HTTP 方法。 按说明使用 GET 或 POST。
409 此基础版代理已有一次新 IP 分配正在进行。 稍等几秒。
422 此基础版代理暂时无法获得新 IP。 稍后再试。
429 太早了:触发了限制或保护规则。 等待 Retry-After 给出的时间。
502 线路或服务器无响应。 一分钟后重试;如果持续出现,请联系客服。

错误的格式如下:

{
  "error": "…"
}

该消息是写给人看的,语言和措辞都可能变化:您的代码应以 HTTP 状态码为准。

完整示例

这个 Python 脚本更换代理的 IP,等待新 IP 就绪,然后显示新旧两个 IP。如果请求太早(429),它会按要求等待,然后再试一次。

import time

import requests

API = "https://frproxy.com"
AUTH = ("USER", "PASS")
PROXY = "http://USER:PASS@frproxy.com:15002"


def current_ip():
    r = requests.get("https://api64.ipify.org",
                     proxies={"http": PROXY, "https": PROXY}, timeout=30)
    r.raise_for_status()
    return r.text


def rotate():
    r = requests.post(API + "/api/v1/rotate", auth=AUTH, timeout=90)
    if r.status_code == 429:
        time.sleep(int(r.headers["Retry-After"]))
        r = requests.post(API + "/api/v1/rotate", auth=AUTH, timeout=90)
    r.raise_for_status()
    time.sleep(r.json()["wait_sec"])


before = current_ip()
rotate()
print(before, "->", current_ip())

另请参阅

需要法国移动代理吗? 真实的法国 4G/5G 线路,一个 HTTP 端口和一个 SOCKS5 端口,按需更换 IP。

查看套餐arrow_forward
grid_view知识库