Использование Marzban API
Marzban API — это мощная асинхронная Python-библиотека для управления пользователями, администраторами, узлами и статистикой в Marzban. API идеально подходит для автоматизации и интеграции в ваши проекты.
Установка библиотеки
Для начала работы с Marzban API выполните установку последней версии:
pip install marzban
Подключение к API
Прямое подключение
- Создайте API-клиент:
from marzban import MarzbanAPIapi = MarzbanAPI(base_url="http://marzban-api.com")
Подключение через SSH-туннель
- Настройте туннель для подключения:
api = MarzbanAPI(base_url="http://127.0.0.1",ssh_username='root', #Если используете SSH подключениеssh_host='99.240.220.100', #Если используете SSH подключениеssh_port=22, #Если используете SSH подключениеssh_private_key_path='C:/Users/User/.ssh/id_rsa', #Если используете SSH подключениеssh_key_passphrase='sshpassphrase', #Если используете SSH подключениеlocal_bind_host='127.0.0.1', #Если используете SSH подключениеlocal_bind_port=8020, #Если используете SSH подключениеremote_bind_host='127.0.0.1', #Если используете SSH подключениеremote_bind_port=8000 #Если используете SSH подключение)
Получение токена администратора
token = await api.get_token(username="admin", password="admin")
Управление администраторами
-
Получение текущего администратора:
current_admin = await api.get_current_admin(token=token.access_token)print("Текущий администратор:", current_admin) -
Создание нового администратора:
new_admin = AdminCreate(username="admin2", is_sudo=False, password="new_password")created_admin = await api.create_admin(admin=new_admin, token=token.access_token)print("Создан администратор:", created_admin) -
Изменение администратора:
modified_admin = await api.modify_admin(username="admin2", admin=AdminModify(password="new_password2"), token=token.access_token)print("Изменён администратор:", modified_admin) -
Удаление администратора:
await api.remove_admin(username="admin2", token=token.access_token)print("Администратор удалён.") -
Получение списка администраторов:
admins = await api.get_admins(token=token.access_token, offset=0, limit=10)print("Администраторы:", admins)
Управление пользователями
-
Добавление нового пользователя:
new_user = UserCreate(username="new_user", proxies={"vless": ProxySettings(flow="xtls-rprx-vision")})added_user = await api.add_user(user=new_user, token=token.access_token)print("Добавленный пользователь:", added_user) -
Получение информации о пользователе:
user_info = await api.get_user(username="new_user", token=token.access_token)print("Информация о пользователе:", user_info) -
Изменение пользователя:
modified_user = await api.modify_user(username="new_user", user=UserModify(data_limit=1073741824), token=token.access_token)print("Изменён пользователь:", modified_user) -
Удаление пользователя:
await api.remove_user(username="new_user", token=token.access_token)print("Пользователь удалён.")
Управление узлами
-
Добавление нового узла:
new_node = NodeCreate(name="Node1", address="192.168.1.1")added_node = await api.add_node(node=new_node, token=token.access_token)print("Добавленный узел:", added_node) -
Получение информации об узле:
node_info = await api.get_node(node_id=added_node.id, token=token.access_token)print("Информация об узле:", node_info) -
Изменение узла:
modified_node = await api.modify_node(node_id=added_node.id, node=NodeModify(name="Node1_Updated"), token=token.access_token)print("Изменён узел:", modified_node) -
Удаление узла:
await api.remove_node(node_id=added_node.id, token=token.access_token)print("Узел удалён.")
Системная статистика
-
Получение статистики системы:
system_stats = await api.get_system_stats(token=token.access_token)print("Системная статистика:", system_stats) -
Получение использования данных:
user_usage = await api.get_user_usage(username="new_user", token=token.access_token, start="2023-01-01", end="2023-12-31")print("Использование данных:", user_usage)
Закрытие API-клиента
await api.close()
Полезные ссылки
- PyPI: marzban ↗
- GitHub Repository: marzban_api ↗
Конtributing
Мы всегда рады вашим предложениям и улучшениям. Если вы хотите помочь, откройте Issue ↗ или создайте Pull Request (PR).
Лицензия
Этот проект распространяется под лицензией MIT. Подробнее в LICENSE ↗.
Поддержка
Если у вас есть вопросы или предложения, свяжитесь с нами:
- Email: [email protected]
- Telegram: @sm1ky ↗