Sommaire
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 proxieschange 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
429avec le temps restant. - Si l'attribution dépasse 55 s, la réponse est
202, avec lestatus« 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 |
ospeut 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
- Changer d'IP : quand le faire, et quand l'éviter.
- Recevoir des SMS
- OS Spoofing TCP
- Agents IA et automatisation
- Erreurs fréquentes : 407, timeout, connexion refusée.
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