Как получить токен аутентификации WebSocket — Пример кода на Python 3

Последнее обновление: 1 апр. 2025 г.

Для приватных каналов WebSocket API (таких как каналы openOrders и addOrder) требуется токен аутентификации из конечной точки REST API GetWebSocketsToken.

Ниже приведен пример кода на Python 3 для вызова конечной точки REST API GetWebSocketsToken, анализа ответа JSON и вывода нового токена аутентификации WebSocket:

#!/usr/bin/env python3

# Импорт необходимых библиотек Python
import time
import base64
import hashlib
import hmac
import urllib.request
import json

# Скопируйте/вставьте публичный и приватный ключи API, как показано в управлении аккаунтом
api_key = 'COPY/PASTE API PUBLIC KEY HERE'
api_secret = 'COPY/PASTE API PRIVATE KEY HERE'

# Переменные (метод API, nonce и данные POST)
api_path = '/0/private/GetWebSocketsToken'
api_nonce = str(int(time.time()*1000))
api_post = 'nonce=' + api_nonce

# Алгоритмы криптографического хеширования
api_sha256 = hashlib.sha256(api_nonce.encode('utf-8') + api_post.encode('utf-8'))
api_hmac = hmac.new(base64.b64decode(api_secret), api_path.encode('utf-8') + api_sha256.digest(), hashlib.sha512)

# Кодирование подписи в формат base64, используемый в значении API-Sign
api_signature = base64.b64encode(api_hmac.digest())

# HTTP-запрос (POST)
api_request = urllib.request.Request('https://api.kraken.com/0/private/GetWebSocketsToken', api_post.encode('utf-8'))
api_request.add_header('API-Key', api_key)
api_request.add_header('API-Sign', api_signature)
api_response = urllib.request.urlopen(api_request).read().decode()

# Вывод ответа API
print(json.loads(api_response)['result']['token'])

Переменные публичного/приватного ключа API (api_key и api_secret) следует заменить новым ключом API из вашего аккаунта Kraken, после чего код можно будет использовать для получения токена аутентификации WebSocket для того же аккаунта. Обратите внимание, что для ключа API должно быть включено разрешение Другое -> Доступ к WebSockets API.

Нужна дополнительная помощь?