Aller au contenu

API REST XProxy : renouveler l’IP, statut et liste des proxys

L’API REST XProxy permet à votre propre code de lister vos proxys mobiles, de renouveler leurs IP, de lire leur statut et de redémarrer les modems par de simples appels HTTP. Appelez l’adresse de votre box, ajoutez les identifiants du tableau de bord là où ils sont requis, et c’est tout.

Ce qu’il vous faut : l’offre Basic ou supérieure (Tarifs ; l’offre Free n’inclut pas la rotation d’IP) et l’adresse de votre box. Depuis l’extérieur de votre réseau, il vous faut aussi le nom d’utilisateur et le mot de passe du tableau de bord.

En bref

URL de base

L’adresse de votre box, par exemple http://192.168.1.100. Il n’y a pas de serveur d’API séparé.

Pas de clé d’API

Les appels utilisent le nom d’utilisateur et le mot de passe du tableau de bord (HTTP Basic). Les appels de rotation et de statut ne demandent aucun identifiant, sauf si vous activez Force API Auth.

Trois appels pour démarrer

info_list liste les modems, rotate_ip obtient une nouvelle IP, status vous indique quand elle est prête.

Quelle est l’URL de base de l’API XProxy ?

L’URL de base est l’adresse de votre box XProxy, avec le port du tableau de bord s’il est différent de 80 :

D’où vous appelezURL de base
Votre réseau localhttp://192.168.1.100 (l’adresse de la box)
Un autre port de tableau de bordhttp://192.168.1.100:8080 (voir Sécuriser le tableau de bord)
Internethttp://myproxy.duckdns.org, votre adresse publique ou l’adresse du VPS. Accédez à la box via NAT Forwarding, VPS Forwarding ou Tailscale.

N’utilisez https:// que si votre domaine sert du HTTPS. Vous pouvez définir un domaine distinct pour les liens et les appels d’API dans Proxy Settings → Address.

Comment s’authentifier auprès de l’API REST ?

Il n’y a pas de clé d’API séparée. Un appel qui demande une authentification utilise le nom d’utilisateur et le mot de passe du tableau de bord en authentification HTTP Basic, les mêmes identifiants que ceux définis dans Sécuriser le tableau de bord.

AppelIdentifiants
Rotation, statut et redémarrage : /api/v1/rotate_ip/…, /api/v1/status/…, /api/v1/reboot/…, ainsi que les anciens liens /reset et /statusAucun, tant que vous n’activez pas Force API Auth. Ensuite, HTTP Basic.
Listes et tout le reste : /api/v1/info_list, /api/v1/proxy_list/…, /proxy_list, /reset_all, /reset_by_port, /status_by_portHTTP Basic, depuis l’extérieur de votre réseau local.
Un appareil de votre réseau local, une IP en liste blanche ou un appareil Tailscale (si autorisé)Aucun identifiant. Force LAN Auth et Force API Auth changent cela.
Un proxy client avec son propre jeton (offre Business)Le jeton inclus dans le lien. Voir Utiliser la Selling Platform.
Traitez un lien de rotation comme un mot de passe. Tant que Force API Auth est désactivé, toute personne qui peut joindre votre box et connaît le lien peut renouveler l’IP de ce modem. Activez Force API Auth si la box est accessible depuis internet.

Existe-t-il un jeton d’API ?

Le tableau de bord lui-même s’authentifie avec POST /v2/auth/login. Il renvoie un jeton qui n’est que votre nom d’utilisateur et votre mot de passe encodés en Base64 : gardez-le donc aussi secret que le mot de passe. Vos scripts peuvent envoyer les mêmes identifiants en HTTP Basic à chaque appel.

bash
# optional: check a login (answer: status true and a token)
curl -X POST 'http://192.168.1.100/v2/auth/login' \
  --header 'Content-Type: application/json' \
  --data '{"username": "admin", "password": "YOUR_PASSWORD"}'

Où se trouve l’API dans le tableau de bord ?

Ouvrez API Reference dans la barre latérale. Cette page renvoie vers la documentation complète sur apidocs.xproxy.io et liste les trois appels par lesquels la plupart des utilisateurs commencent.

Page API Reference du tableau de bord XProxy avec le bouton Open Documentation et les appels de démarrage rapide info_list, rotate_ip et status repérés (données de démo)
API Reference : ① Open Documentation · ② appels Quick Start : info_list, rotate_ip/position, status/position.

Quels endpoints puis-je appeler ?

Tous les appels sont en GET, sauf mention contraire. <position> est le numéro du modem (1 = premier modem). <proxy> est le host:port de son proxy.

EndpointRôleIdentifiants requis ?
/api/v1/info_list?page=&limit=Liste les modems : ports, IP publique, dernière rotation, infos de l’appareil. Réponse : data et total.Oui
/api/v1/proxy_list/<type>Texte brut, un proxy par ligne. Types : proxy, socks5, proxy_ipv6, socks5_ipv6, vless, vless_ipv6, ss.Oui
/api/v1/rotate_ip/position/<position>Obtient une nouvelle IP pour ce modem.Non*
/api/v1/rotate_ip/proxy/<proxy>Idem, par proxy.Non*
/api/v1/status/position/<position>
/api/v1/status/proxy/<proxy>
IP publique et état du modem.Non*
/api/v1/reboot/position/<position>
/api/v1/reboot/proxy/<proxy>
Redémarre le modem.Non*
/reset?proxy=<proxy>, /status?proxy=<proxy>Les anciens liens de rotation et de statut. Le bouton LINK du tableau de bord en copie un.Non*
/reset_allRenouvelle l’IP de tous les modems.Oui
POST /reset_by_port avec {"port": 4001}Renouvelle l’IP du modem de ce port proxy.Oui
/status_by_port?port=4001Statut par port proxy.Oui

Oui = les identifiants du tableau de bord, depuis l’extérieur de votre réseau local. Non* = aucun identifiant tant que Force API Auth n’est pas activé. La liste complète, avec tous les paramètres, se trouve dans la documentation de l’API.

Comment lister mes proxys avec l’API ?

bash
# all modems, first page of 20
curl -u admin:YOUR_PASSWORD 'http://192.168.1.100/api/v1/info_list?page=1&limit=20'

# every modem at once (leave page and limit out)
curl -u admin:YOUR_PASSWORD 'http://192.168.1.100/api/v1/info_list'

Depuis votre propre réseau local, ou depuis une IP en liste blanche, vous pouvez omettre -u.

La réponse, abrégée :

json
{
  "data": [
    {
      "position": 1,
      "host": "192.168.1.100",
      "proxy_port": 4001,
      "socks5_port": 5001,
      "public_ip": "203.0.113.25",
      "public_ip_ipv6": null,
      "device_manufacture": "XProxy-Hilink",
      "device_rebooting": false,
      "device_resetting": false
    }
  ],
  "total": 1
}

Autres champs de chaque élément : proxy_port_v6, socks5_port_ipv6, vless_port, vless_port_v6, ss_port, ss_port_v6, last_updated_ip, device_imei, device_number, device_ip et device_extra_info.

Comment renouveler l’IP avec l’API ?

Appelez rotate_ip, puis lisez status jusqu’à ce que le modem soit MODEM_READY avec une nouvelle IP. Les mêmes appels, le minuteur et le lien de rotation sont décrits dans Changer l’IP.

bash
# by position (1 = first modem)
curl 'http://192.168.1.100/api/v1/rotate_ip/position/1'

# or by proxy (host:port)
curl 'http://192.168.1.100/api/v1/rotate_ip/proxy/192.168.1.100:4001'

# the box answers at once:
# {"status": true, "msg": "command_sent"}

# check on the new IP a few seconds later
curl 'http://192.168.1.100/api/v1/status/position/1'
# {"status": true, "public_ip": "203.0.113.77", "public_ip_v6": null,
#  "last_public_ip": "203.0.113.25", "msg": "MODEM_READY"}

Aucun identifiant n’est nécessaire, sauf si Force API Auth est activé. Ajoutez alors -u admin:YOUR_PASSWORD.

Comment obtenir une liste brute de proxys pour mon outil ?

bash
# plain text, one host:port per line
curl -u admin:YOUR_PASSWORD 'http://192.168.1.100/api/v1/proxy_list/proxy'
curl -u admin:YOUR_PASSWORD 'http://192.168.1.100/api/v1/proxy_list/socks5'

# 192.168.1.100:4001
# 192.168.1.100:4002

Autres types : proxy_ipv6, socks5_ipv6, vless, vless_ipv6 et ss. VLESS et Shadowsocks renvoient des liens de partage et nécessitent l’offre Premium ou supérieure.

Comment obliger l’API à demander des identifiants ?

Ouvrez General Settings → System Setting → Security, activez Force API Auth ① et enregistrez ③. Enregistrez d’abord un nom d’utilisateur et un mot de passe ②, pour que vos appels aient des identifiants à envoyer.

System Setting, onglet Security : interrupteur Force API Auth, champs Username et Password et Save repérés (données de démo)
Security → Password Authentication for dashboard : ① Force API Auth · ② Username et Password · ③ Save.

Que signifient les réponses ?

Vous recevezSignification
{"status": true, "msg": "command_sent"}La rotation a commencé. La nouvelle IP arrive quelques secondes plus tard.
need_upgradeVotre offre n’inclut pas la rotation d’IP. Voir Gérer votre abonnement.
modem_resetting ou MODEM_RESETTINGUne rotation est déjà en cours sur ce modem.
MODEM_STOPPEDLe modem est arrêté : il ne peut pas changer d’IP.
slot_not_found, MODEM_NOT_FOUNDAucun modem sur ce port ou à cette position.
invalid_format_proxyLe proxy doit être au format host:port.
MODEM_DISCONNECTEDLe modem est éteint ou débranché.
COLLISION_IPMême IP qu’avant la rotation (uniquement si IP unchanged detect est activé).
HTTP 401, {"message": "Unauthorized…"}L’appel nécessite les identifiants du tableau de bord. Ajoutez-les, ou appelez depuis une IP en liste blanche.
HTTP 403, Access DeniedDomain Only est activé. Appelez avec un nom de domaine, pas une adresse IP.

FAQ

Où obtenir une clé d’API XProxy ?

Il n’y a pas de clé d’API. Utilisez le nom d’utilisateur et le mot de passe du tableau de bord en authentification HTTP Basic, ou appelez sans identifiants depuis votre réseau local. Pour les liens de rotation et de statut, des identifiants ne sont nécessaires qu’après l’activation de Force API Auth.

Comment renouveler l’IP d’un proxy mobile depuis du code ?

Envoyez GET /api/v1/rotate_ip/position/1 à votre box. Elle répond immédiatement command_sent. Appelez ensuite /api/v1/status/position/1 jusqu’à ce que msg vaille MODEM_READY et que public_ip ait changé.

À quelle fréquence puis-je renouveler l’IP ?

Une rotation est refusée tant qu’une autre est en cours sur le même modem (modem_resetting). Vous pouvez aussi définir le délai minimal entre deux rotations d’un port dans Rotation Settings.

Puis-je appeler l’API depuis l’extérieur de mon réseau ?

Oui, dès que la box est joignable depuis l’extérieur. Utilisez un domaine ou une adresse publique comme URL de base et ajoutez les identifiants du tableau de bord. Activez Force API Auth, pour que les liens de rotation les demandent aussi.

Mes clients peuvent-ils utiliser l’API ?

Ils reçoivent leur propre lien avec un jeton pour leur proxy (offre Business) : ils n’ont donc jamais besoin de vos identifiants du tableau de bord. Voir Utiliser la Selling Platform.

Et ensuite ?

Renouvelez l’IP avec un minuteur, protégez vos appels ou branchez les proxys dans un outil.

Toujours bloqué ?Un technicien peut examiner votre appareil avec un code PIN à usage unique, ou discutez avec nous sur Telegram.