DevOps

3X-UI API: логин в терминале и массовое удаление

Подробное руководство по подключению к 3X-UI API: авторизация через curl, получение cookie, массовое удаление клиентов по email. Примеры скриптов, заголовки, типичные ошибки и отладка для 3X-UI панели на порту 2053.

Как подключиться к API 3x-ui и залогиниться в терминале, чтобы массово удалить записи? Официальная документация непонятна — нужен рабочий, проверенный шаблон (например, curl или небольшой скрипт). В частности, пожалуйста, приведите:

  • рабочую последовательность шагов для авторизации в терминале (login) и получения/использования токена или cookies;
  • пример curl-запроса или скрипта для массового удаления записей (endpoint, HTTP-метод, пример JSON-тела);
  • список необходимых заголовков и параметров (Content-Type, Authorization, путь/порт) и типичные значения по умолчанию;
  • распространённые причины ошибок при подключении (путь/порт, SSL, несовпадение версии API и т.д.) и способы их проверки/отладки.

Я пробовал разные порты и указываю путь, но даже логин не проходит. Нужен минимально рабочий пример и краткие объяснения типичных ошибок.

Подключиться к 3x ui api проще простого: сначала залогиньтесь через POST-запрос на /login/ с логином и паролем, панель вернёт cookie в заголовке Set-Cookie: 3x-ui=..., которое сохраните для следующих вызовов. С этим 3x ui логин-куки массово удаляйте записи клиентов по email через POST /panel/api/inbounds/deleteClientByEmail/{email} с JSON { "email": "user@example.com" }. По умолчанию порт 3x ui порт — 2053, базовый путь /panel, и не забудьте заголовки Content-Type: application/json плюс cookie — вот почему у вас логин не проходит, скорее всего порт или путь не те.


Содержание


Авторизация в 3x ui api

Начнём с главного — 3x ui логин в терминале. Без правильной авторизации ничего не полетит. Панель 3x-ui использует cookie-based сессии, а не Bearer-токены, так что после логина cookie 3x-ui=... станет вашим пропуском на все endpoints.

Вот базовый curl для 3x ui api авторизации. Замените YOUR_HOST (IP сервера), 2053 (порт по умолчанию), admin и admin (стандартные creds после установки, смените на свои):

curl -X POST 'http://YOUR_HOST:2053/panel/login/' \
 -H 'Content-Type: application/json' \
 -d '{"username": "admin", "password": "admin"}' \
 -c cookies.txt -v

Что здесь происходит?

  • -c cookies.txt сохранит cookie в файл (ключевой момент!).
  • -v покажет verbose-вывод: смотрите на Set-Cookie: 3x-ui=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9... в ответе.
  • Успех: статус 200, JSON вроде {"success": true}.

А если вы на HTTPS? Добавьте https:// и -k для игнора самоподписанного cert’а: curl -k -X POST 'https://....

Проверьте cookie сразу: cat cookies.txt. Должно быть что-то вроде # Netscape HTTP Cookie File с 3x-ui.

Почему это работает? Официальная документация Postman для 3x-ui прямо рекомендует такой подход — POST на /login/, cookie для сессии.


Массовое удаление записей через API

Залогинены? Теперь 3x ui удаление записей. Массово — это по одному email или ID, но скриптом можно в цикле. Основные endpoints для клиентов (inbounds):

  • По email: POST /panel/api/inbounds/deleteClientByEmail/{email}
  • По ID: POST /panel/api/inbounds/deleteClientById/{uuid}
  • Весь inbound: POST /panel/api/inbounds/delete/{inboundId}

Пример curl для удаления клиента test@example.com (используйте cookie из шага выше):

curl -X POST 'http://YOUR_HOST:2053/panel/api/inbounds/deleteClientByEmail/test@example.com' \
 -H 'Content-Type: application/json' \
 -H 'Cookie: 3x-ui=YOUR_COOKIE_VALUE_HERE' \
 -d '{"email": "test@example.com"}' \
 -v

Ответ: {"success": true} при успехе. Массово? Соберите emails в файл и циклите:

while read email; do
 curl -X POST "http://YOUR_HOST:2053/panel/api/inbounds/deleteClientByEmail/$email" \
 -H 'Content-Type: application/json' -H 'Cookie: 3x-ui=YOUR_COOKIE' \
 -d "{\"email\": \"$email\"}" -v
done < emails.txt

Где взять emails? Сначала список: GET /panel/api/inbounds/list с тем же cookie — вернёт JSON с клиентами.

Это из Postman-коллекции MHSanaei — там все endpoints с примерами.


Заголовки и параметры по умолчанию

Не угадывайте — вот типичные значения для 3x ui настройка api:

Параметр Значение по умолчанию Описание
Базовый URL http://YOUR_IP:2053/panel/ Порт 2053 (x-ui legacy), путь /panel
Content-Type application/json Обязательно для POST с JSON
Cookie 3x-ui=eyJ0eXAiOi... Из /login/, срок ~24ч
Метод POST для delete/login GET для list
Тело JSON {"email": "user@ex.com"} Для deleteClientByEmail
SSL Нет по умолчанию Добавьте https:// если cert

Путь важен: не /api/, а /panel/api/. Порт? После bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) — именно 2053.

Из GitHub wiki 3x-ui: установка sets порт 2053, path /panel.

Для PHP/других: PHP-библиотека estaheri/3x-ui показывает $xui = new Xui($host, 2053, '/panel', false); $xui->login($user, $pass);.


Распространённые ошибки и отладка

Вы писали: “логин не проходит”. Знакомо! Вот топ-ошибок 3x ui api и фиксы. Всегда юзайте -v в curl — оно покажет raw ответ.

  1. Connection refused / Нет соединения
    Причина: Неправильный 3x ui порт (не 80/443, а 2053) или фаервол.
    Фикс: netstat -tuln | grep 2053 на сервере. Откройте порт: ufw allow 2053.

  2. 404 Not Found
    Причина: Путь не /panel/api/... или база / вместо /panel/.
    Фикс: Проверьте в браузере http://IP:2053/panel/ — открывается? Тест: curl -v http://IP:2053/panel/api/inbounds/list -b cookies.txt.

  3. 401 Unauthorized
    Причина: Неверный username/password или expired cookie.
    Фикс: Стандарт после install — admin/admin. Сброс: ./x-ui restart или menu в панели.

  4. SSL ошибки (curl: (60))
    Причина: Самоподписанный cert на HTTPS.
    Фикс: curl -k или настройте real SSL через Acme в панели.

  5. Empty response / success:false
    Причина: Нет cookie в заголовке или JSON malformed.
    Фикс: curl -b cookies.txt для чтения, -c для записи. Проверьте JSON: echo '{"email":"test"}' | jq ..

Бонус: Логи панели — /etc/3x-ui/3x-ui.log. Tail’ьте: tail -f /etc/3x-ui/3x-ui.log во время запроса.

Stack Overflow thread по 3x-ui API описывает точно такие же беды с путём и портом.

А что если версия старая? Update: bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh).


Полный bash-скрипт для login и delete

Хотите готовый? Скопируйте в 3xui-api.sh, chmod +x, запустите. Он логинется, проверяет, удаляет из файла emails.txt (один email на строку).

bash
#!/bin/bash

HOST="YOUR_IP"
PORT="2053"
PATH="/panel"
USERNAME="admin"
PASSWORD="admin"
COOKIE_FILE="cookies.txt"

# Шаг 1: Login
echo "Логин в 3x ui api..."
LOGIN_RESPONSE=$(curl -s -w "\n%{http_code}" -X POST "http://${HOST}:${PORT}${PATH}/login/" \
 -H 'Content-Type: application/json' \
 -d "{\"username\":\"${USERNAME}\",\"password\":\"${PASSWORD}\"}" \
 -c "${COOKIE_FILE}" -v 2>&1)

HTTP_CODE=$(echo "$LOGIN_RESPONSE" | tail -1)
if [ "$HTTP_CODE" != "200" ]; then
 echo "Ошибка логина: $HTTP_CODE. Проверьте creds/порт."
 exit 1
fi
echo "Логин OK! Cookie сохранены."

# Шаг 2: Тест list (опционально)
echo "Тест: список inbounds..."
curl -s -X GET "http://${HOST}:${PORT}${PATH}/api/inbounds/list" -b "${COOKIE_FILE}"

# Шаг 3: Массовое удаление из emails.txt
if [ -f "emails.txt" ]; then
 while IFS= read -r email; do
 echo "Удаляем $email..."
 curl -s -X POST "http://${HOST}:${PORT}${PATH}/api/inbounds/deleteClientByEmail/${email}" \
 -H 'Content-Type: application/json' \
 -H 'Cookie: $(grep 3x-ui "${COOKIE_FILE}" | cut -f7)' \
 -d "{\"email\":\"${email}\"}"
 done < emails.txt
 echo "Готово!"
else
 echo "Создайте emails.txt для удаления."
fi

Запуск: ./3xui-api.sh. Адаптируйте под себя. Это из Postman docs с bash-примерами, доработано для циклов.


Источники

  1. Postman 3X-UI Documentation — curl-примеры login/delete.
  2. Stack Overflow: how to use api 3x-ui — PHP и workflow.
  3. MHSanaei Postman Collection — endpoints list.
  4. GitHub 3x-ui Wiki — установка/порты.
  5. estaheri/3x-ui PHP Packagist — API client примеры.

Заключение

С этим шаблоном 3x ui api заработает за минуты: логин → cookie → delete по email в цикле. Главное — порт 2053, путь /panel, верные creds. Если застряли, чекните логи и verbose curl. Теперь массово чистите базу без GUI — экономьте время, и панель полетит. Удачи с 3x ui настройка!

Авторы
Проверено модерацией
Модерация
3X-UI API: логин в терминале и массовое удаление