Aller au contenu

Documentation de l'API

Piloter vos proxies par HTTP : changer d'IP, redémarrer la ligne, lire les SMS, régler l'empreinte OS. Routes, réponses, limites et exemples.

update Mis à jour le

Démarrage rapide

L'API agit sur un proxy à la fois : celui dont vous envoyez l'identifiant et le mot de passe.

  • Adresse de base : https://frproxy.com
  • Authentification : Basic Auth, avec l'identifiant et le mot de passe du proxy, pas ceux de votre compte. Ils sont affichés dans Mes proxies.
  • Réponses : JSON.

Premier appel, qui change l'IP du proxy :

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

Remplacez USER et PASS par les identifiants de votre proxy.

Les routes

Méthode Route Rôle
GET ou POST /api/v1/rotate Changer l'IP du proxy
GET ou POST /apix/<port>/<jeton> Changer l'IP par un lien court, sans identifiants
POST /api/v1/reboot Redémarrer la ligne
GET /api/v1/sms Lire les SMS reçus
POST /api/v1/spoof Choisir l'empreinte OS
GET ou POST /api/v1/wg-rotate Changer l'IP d'un tunnel WireGuard

Authentification

Chaque requête porte l'identifiant et le mot de passe du proxy, en Basic Auth. Avec curl, c'est l'option -u ; avec la bibliothèque Python requests, le paramètre auth.

curl -u "USER:PASS" https://frproxy.com/api/v1/sms
  • Changer le mot de passe du proxy dans Mes proxies change aussi celui de l'API, immédiatement.
  • Un proxy expiré ne se pilote plus : l'API répond 403.
  • Les identifiants peuvent aussi s'écrire dans l'adresse : https://USER:PASS@frproxy.com/api/v1/rotate. Certains navigateurs et outils refusent cette forme ; le lien court, présenté plus bas, s'en passe.

Changer d'IP

GET ou POST /api/v1/rotate

La ligne mobile du proxy se reconnecte au réseau et reçoit une nouvelle IP de son opérateur. La réponse arrive tout de suite, et la rotation se poursuit en arrière-plan : une dizaine de secondes en général. Pendant ce temps, le proxy ne répond pas et les connexions en cours sont coupées.

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

Réponse :

{
  "success": true,
  "status": "rotation started — 轮换已启动 — ротация запущена",
  "wait_sec": 30,
  "retry_after": 30
}
Champ Signification
success true : la rotation est lancée.
status Message informatif, en anglais, chinois et russe. Ne pas s'en servir dans un script.
wait_sec Secondes à attendre avant d'utiliser la nouvelle IP.
retry_after Secondes à attendre avant de demander une nouvelle rotation.

GET est accepté pour qu'un simple lien suffise : un navigateur, un favori ou un outil peuvent déclencher la rotation. La réponse ne donne pas la nouvelle IP ; pour la lire, voir « Vérifier la nouvelle IP », plus bas.

Sur un proxy Essentiel

Un proxy Essentiel partage sa ligne avec d'autres proxies. La même route lui donne une nouvelle IP à lui seul, sans toucher la ligne ni ses voisins. La réponse attend que l'IP soit prête, et la donne :

{
  "success": true,
  "status": "new ip assigned — 已分配新 IP — назначен новый IP",
  "ip": "203.0.113.42",
  "wait_sec": 0,
  "retry_after": 86400
}
  • Une nouvelle IP par proxy et par 24 h. Avant l'échéance, l'API répond 429 avec le temps restant.
  • Si l'attribution dépasse 55 s, la réponse est 202, avec le status « new ip in progress » : l'IP arrive peu après.
  • Les proxies Essentiel n'ont pas de lien court dans Mes proxies : utilisez cette route.

Lien court

GET ou POST /apix/<port>/<jeton>

Le même changement d'IP, sans identifiant ni mot de passe dans l'adresse. Le lien se colle tel quel dans un navigateur, un favori ou un outil.

curl https://frproxy.com/apix/15002/a1b2c3d4e5f6
  • Le lien de chaque proxy est dans Mes proxies, derrière l'étiquette « ROT IP », et sur la page API de votre espace client.
  • Même réponse et mêmes limites que /api/v1/rotate.
  • Le jeton ne sert qu'à changer l'IP de ce proxy : il ne donne accès ni au proxy, ni à votre compte. Gardez-le pour vous quand même : qui le détient peut changer votre IP à tout moment.
  • Il ne change pas quand vous changez le mot de passe du proxy.

Vérifier la nouvelle IP

La rotation ne renvoie pas l'IP obtenue, sauf sur un proxy Essentiel. Pour la lire, interrogez un service d'IP à travers le proxy lui-même :

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

Remplacez 15002 par le port HTTP de votre proxy. La commande affiche l'adresse que voient les sites, en IPv4 ou en IPv6 selon la ligne. D'autres méthodes sont dans Tester son proxy.

Redémarrer la ligne

POST /api/v1/reboot

Redémarre l'appareil qui porte la ligne du proxy, modem ou téléphone. C'est le recours quand le proxy ne répond plus. Pour changer d'IP, la rotation suffit, et elle coupe moins longtemps.

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

Réponse, quand l'appareil a reçu l'ordre :

{
  "status": "ok"
}

Si l'ordre met plus de 40 s à passer, l'API répond 202 sans attendre la fin, et le redémarrage va au bout tout seul :

{
  "status": "pending",
  "message": "The restart is under way and continues on the device (up to 2 minutes for a phone)."
}
  • Comptez une à deux minutes avant que la ligne revienne. Si elle ne revient pas, attendez 10 min avant de recommencer : enchaîner les redémarrages ne la fait pas revenir plus vite.
  • Indisponible sur un proxy Essentiel (403) : la ligne est partagée, la redémarrer couperait les autres proxies.
  • Les délais entre redémarrages et rotations sont décrits dans « Limites », plus bas.

Lire les SMS

GET /api/v1/sms

Rend les SMS reçus sur la carte SIM du proxy depuis qu'il vous est attribué. Les messages arrivés avant ne sont pas rendus.

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

Réponse :

[
  {
    "Index": "3",
    "Phone": "+33612345678",
    "Content": "Your verification code is 481920",
    "Date": "2026-10-27 14:05:12"
  }
]
Champ Signification
Index Numéro du message sur la SIM.
Phone Expéditeur : un numéro, ou un nom court comme « Orange ».
Content Texte du message.
Date Date de réception, au format AAAA-MM-JJ HH:MM:SS, à l'heure de Paris.
  • Les noms des champs commencent par une majuscule.
  • Si l'option SMS n'est pas active sur votre proxy, la liste est vide : [].

Choisir l'empreinte OS

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

Rapproche l'empreinte TCP/IP des connexions (TTL, fenêtre et options TCP) de celle du système que déclare votre navigateur. Les en-têtes HTTP ne sont pas modifiés. Le principe est expliqué dans OS Spoofing TCP.

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

Réponse :

{
  "status": "ok",
  "os": "windows"
}
Valeur de os Empreinte
windows Windows
macos macOS
linux Linux
android Android
ios iOS
vide (os=) Aucune : l'empreinte d'origine de l'appareil
  • os peut aussi être envoyé dans le corps de la requête, comme un champ de formulaire. Les majuscules sont acceptées.
  • Le réglage vaut pour toute la ligne : si plusieurs proxies la partagent, le dernier réglage s'applique à tous.
  • Disponible si votre formule l'inclut ; sinon, l'API répond 403.

Tunnel WireGuard

GET ou POST /api/v1/wg-rotate

Chaque tunnel WireGuard a son propre lien de rotation, sur sa carte dans Mes proxies. L'identifiant est wg suivi du numéro du tunnel, et le mot de passe est le jeton du tunnel :

curl -u "wg12:TOKEN" https://frproxy.com/api/v1/wg-rotate
  • Même réponse et mêmes limites que la rotation d'un proxy.
  • Un tunnel vendu avec un proxy sort par la même ligne : changer l'IP de l'un change aussi celle de l'autre.
  • Si le proxy qui porte le tunnel a expiré, l'API répond 403.

Limites

Action Limite
Changer d'IP 1 toutes les 30 s par proxy, panel, API et lien court confondus
Nouvelle IP d'un proxy Essentiel 1 par 24 h et par proxy
Redémarrer la ligne 1 toutes les 5 min
Lire les SMS 100 par minute
Choisir l'empreinte OS 10 par minute

Deux règles protègent en plus la ligne, quel que soit le proxy qui la sollicite :

  • pas de redémarrage pendant une rotation, ni dans les 2 min qui suivent ;
  • pas de rotation dans les 5 min qui suivent un redémarrage, ni tant que la ligne n'est pas revenue (10 min au plus).

Enchaîner rotations et redémarrages coupe la ligne plus longtemps que l'un ou l'autre seul.

Un refus répond 429 avec l'en-tête Retry-After : le nombre de secondes à attendre avant de réessayer. Un refus ne consomme rien.

Codes de réponse

Code Signification Que faire
200 Succès. Rien.
202 Accepté : l'action continue en arrière-plan. Attendre, puis vérifier.
400 Paramètre invalide, par exemple une valeur de os inconnue. Corriger la requête.
401 Identifiants absents ou faux, ou lien court inconnu. Vérifier les identifiants du proxy, ou recopier le lien.
403 Proxy expiré, option absente de votre formule, ou action indisponible sur ce proxy. Renouveler le proxy, ou passer par une autre action.
404 Lien court mal formé. Recopier le lien depuis Mes proxies.
405 Méthode HTTP non acceptée. Utiliser GET ou POST, comme indiqué.
409 Une nouvelle IP est déjà en cours sur ce proxy Essentiel. Patienter quelques secondes.
422 Nouvelle IP indisponible pour l'instant sur ce proxy Essentiel. Réessayer plus tard.
429 Trop tôt : une limite ou une règle de protection s'applique. Attendre la durée donnée par Retry-After.
502 La ligne ou le serveur ne répond pas. Réessayer dans une minute ; si cela dure, écrire au support.

Une erreur arrive sous cette forme :

{
  "error": "…"
}

Le message s'adresse à un humain, et sa langue comme sa formulation peuvent varier : votre code doit se fier au code HTTP.

Exemple complet

Ce script Python change l'IP d'un proxy, attend qu'elle soit prête, puis affiche l'ancienne et la nouvelle. S'il arrive trop tôt (429), il attend la durée demandée et réessaie une fois.

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())

Voir aussi

Besoin d'un proxy mobile français ? Une vraie ligne 4G/5G française, un port HTTP et un port SOCKS5, rotation d'IP à la demande.

Voir les offresarrow_forward
grid_viewWiki