目录
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())
另请参阅
- 更换 IP:何时更换,何时不要更换。
- 接收短信
- TCP 系统伪装
- AI 智能体与自动化
- 常见错误:407、超时、连接被拒。
需要法国移动代理吗? 真实的法国 4G/5G 线路,一个 HTTP 端口和一个 SOCKS5 端口,按需更换 IP。
查看套餐arrow_forward