コンテンツにスキップ

XProxy REST API:IP ローテーション・ステータス・プロキシ一覧

XProxy の REST API を使うと、自分のコードからシンプルな HTTP リクエストで、モバイルプロキシの一覧取得、IP のローテーション、ステータスの確認、モデムの再起動ができます。box のアドレスを呼び出し、必要な場面でダッシュボードのログインを付けるだけです。

必要なもの:Basic プラン以上(料金。Free プランには IP ローテーションがありません)と box のアドレス。ネットワークの外から使う場合は、ダッシュボードのユーザー名とパスワードも必要です。

ひとことで言うと

ベース URL

box のアドレスです(例:http://192.168.1.100)。別の API サーバーはありません。

API キーは不要

ダッシュボードのユーザー名とパスワード(HTTP Basic)を使います。ローテーションとステータスの呼び出しは、Force API Auth をオンにしない限りログイン不要です。

まずは 3 つの呼び出し

info_list でモデムを一覧し、rotate_ip で新しい IP を取得し、status で準備ができたかを確認します。

XProxy API のベース URL は?

ベース URL は XProxy box のアドレスです。ダッシュボードのポートが 80 以外なら、そのポートも付けます:

呼び出し元ベース URL
ローカルネットワークhttp://192.168.1.100(box のアドレス)
ダッシュボードのポートを変更している場合http://192.168.1.100:8080(ダッシュボードを保護するを参照)
インターネットhttp://myproxy.duckdns.org、公開アドレス、または VPS のアドレス。box へは NAT Forwarding、VPS Forwarding、Tailscale で接続します。

https:// は、ドメインが HTTPS に対応している場合だけ使ってください。リンクと API 呼び出し用のドメインは Proxy Settings → Address で別に設定できます。

REST API にログインするには?

別の API キーはありません。ログインが必要な呼び出しでは、ダッシュボードのユーザー名とパスワードを HTTP Basic 認証で送ります。ダッシュボードを保護するで設定したものと同じログインです。

呼び出しログイン
ローテーション、ステータス、再起動:/api/v1/rotate_ip/…、/api/v1/status/…、/api/v1/reboot/…、および旧形式の /reset、/status リンクForce API Auth をオンにするまでは不要。オンにすると HTTP Basic。
一覧やその他すべて:/api/v1/info_list、/api/v1/proxy_list/…、/proxy_list、/reset_all、/reset_by_port、/status_by_portローカルネットワークの外からは HTTP Basic。
ローカルネットワーク上のデバイス、ホワイトリストに登録した IP、Tailscale のデバイス(許可している場合)ログイン不要。Force LAN Auth と Force API Auth でこれを変更できます。
専用トークンを持つ顧客のプロキシ(Business プラン)リンク内のトークン。Selling Platform の使い方を参照してください。
ローテーションリンクはパスワードと同じように扱ってください。Force API Auth がオフの間は、box にアクセスできてリンクを知っている人なら誰でも、そのモデムをローテーションできます。box をインターネットに公開している場合は Force API Auth をオンにしてください。

API トークンはありますか?

パネル自体は POST /v2/auth/login でログインします。返ってくるトークンは、ユーザー名とパスワードを Base64 で書いただけのものなので、パスワードと同じように秘密にしてください。スクリプトからは、毎回 HTTP Basic で同じログインを送れば十分です。

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"}'

パネルのどこに API がありますか?

サイドバーの API Reference を開きます。apidocs.xproxy.io の完全なドキュメントへのリンクと、最初によく使われる 3 つの呼び出しが載っています。

XProxy パネルの API Reference ページ:Open Documentation ボタンと、クイックスタートの info_list、rotate_ip、status を示した画面(デモデータ)
API Reference:① Open Documentation · ② Quick Start の呼び出し:info_list、rotate_ip/position、status/position。

どのエンドポイントを呼び出せますか?

特に記載がなければ、すべて GET です。<position> はモデムの番号(1 = 最初のモデム)、<proxy> はそのプロキシの host:port です。

エンドポイント機能ログインが必要?
/api/v1/info_list?page=&limit=モデムの一覧:ポート、公開 IP、最後のローテーション、デバイス情報。レスポンス:data と total。はい
/api/v1/proxy_list/<type>プレーンテキストで 1 行に 1 プロキシ。種類:proxy、socks5、proxy_ipv6、socks5_ipv6、vless、vless_ipv6、ss。はい
/api/v1/rotate_ip/position/<position>そのモデムの IP を新しくします。いいえ*
/api/v1/rotate_ip/proxy/<proxy>同じ操作をプロキシで指定します。いいえ*
/api/v1/status/position/<position>
/api/v1/status/proxy/<proxy>
モデムの公開 IP と状態。いいえ*
/api/v1/reboot/position/<position>
/api/v1/reboot/proxy/<proxy>
モデムを再起動します。いいえ*
/reset?proxy=<proxy>、/status?proxy=<proxy>旧形式のローテーション・ステータスのリンク。パネルの LINK ボタンでコピーできます。いいえ*
/reset_allすべてのモデムをローテーションします。はい
POST /reset_by_port({"port": 4001} を送信)そのプロキシポートのモデムをローテーションします。はい
/status_by_port?port=4001プロキシポートでステータスを取得します。はい

はい = ローカルネットワークの外からはダッシュボードのログインが必要。いいえ* = Force API Auth をオンにするまではログイン不要。すべてのパラメーターを含む完全な一覧は API ドキュメントにあります。

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'

自分のローカルネットワーク、またはホワイトリストに登録した IP からなら、-u を省略できます。

レスポンス(一部省略):

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
}

各項目のその他のフィールド: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、device_extra_info。

API で IP をローテーションするには?

rotate_ip を呼び出し、モデムが新しい IP で MODEM_READY になるまで status を確認します。同じ呼び出し、タイマー、ローテーションリンクについては 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"}

Force API Auth がオンでなければログインは不要です。オンの場合は -u admin:YOUR_PASSWORD を追加します。

ツール用にプロキシをテキストで一覧するには?

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

ほかの種類:proxy_ipv6、socks5_ipv6、vless、vless_ipv6、ss。VLESS と Shadowsocks は共有リンクを返し、Premium プラン以上が必要です。

API にログインを求めるには?

General Settings → System Setting → Security を開き、Force API Auth をオン ① にして保存 ③ します。呼び出し時に送るログインが必要なので、先にユーザー名とパスワードを保存 ② しておいてください。

System Setting の Security タブ:Force API Auth スイッチ、Username と Password の入力欄、Save を示した画面(デモデータ)
Security → Password Authentication for dashboard:① Force API Auth · ② Username と Password · ③ Save。

レスポンスの意味は?

レスポンス意味
{"status": true, "msg": "command_sent"}ローテーションが始まりました。新しい IP は数秒後に割り当てられます。
need_upgradeご利用のプランには IP ローテーションがありません。サブスクリプションの管理を参照してください。
modem_resetting または MODEM_RESETTINGそのモデムですでにローテーションが実行中です。
MODEM_STOPPEDモデムが停止しているため、ローテーションできません。
slot_not_found、MODEM_NOT_FOUNDそのポートまたは位置にモデムがありません。
invalid_format_proxyプロキシは host:port の形式で指定してください。
MODEM_DISCONNECTEDモデムの電源が切れているか、外れています。
COLLISION_IPローテーション前と同じ IP です(IP unchanged detect がオンの場合のみ)。
HTTP 401、{"message": "Unauthorized…"}ダッシュボードのログインが必要です。ログインを付けるか、ホワイトリストに登録した IP から呼び出してください。
HTTP 403、Access DeniedDomain Only がオンです。IP アドレスではなくドメイン名で呼び出してください。

よくある質問

XProxy の API キーはどこで取得できますか?

API キーはありません。ダッシュボードのユーザー名とパスワードを HTTP Basic のログインとして使うか、ローカルネットワークからログインなしで呼び出してください。ローテーションとステータスのリンクでは、Force API Auth をオンにした後だけログインが必要です。

コードからモバイルプロキシの IP をローテーションするには?

box に GET /api/v1/rotate_ip/position/1 を送ります。すぐに command_sent が返ります。その後、msg が MODEM_READY になり public_ip が変わるまで /api/v1/status/position/1 を呼び出します。

どのくらいの頻度でローテーションできますか?

同じモデムで別のローテーションが実行中のときは拒否されます(modem_resetting)。ポートの 2 回のローテーションの最短間隔は ローテーション設定でも設定できます。

ネットワークの外から API を呼び出せますか?

はい。外部から box にアクセスできるようにすれば可能です。ベース URL にドメインまたは公開アドレスを使い、ダッシュボードのログインを付けます。ローテーションリンクでもログインが求められるよう、Force API Auth をオンにしてください。

顧客も API を使えますか?

顧客には、自分のプロキシ用のトークン付きリンクが発行されます(Business プラン)。そのため、あなたのダッシュボードのログインは必要ありません。Selling Platform の使い方を参照してください。

次はどうする?

タイマーでローテーションする、呼び出しを保護する、プロキシをツールに組み込む。

解決しませんか?技術者がワンタイム PIN でお使いのデバイスを確認できます。Telegram でチャットすることもできます。