Пример запроса REST API с использованием bash

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

Введение

Реализация интерфейса Kraken REST API с использованием оболочки Bourne Again shell (bash) и некоторых связанных команд (openssl, base64, xxd и т. д.) может быть удобным и эффективным решением для взаимодействия с рынками Kraken (хотя это не будет самой быстрой реализацией по сравнению с компилированным кодом).

Bash и необходимые команды легко доступны (предустановлены) в большинстве систем UNIX, Linux и macOS, а также могут быть легко установлены в Windows и других системах, поэтому все необходимое программное обеспечение доступно без использования каких-либо дополнительных сторонних инструментов или библиотек API.

Используя простой текстовый редактор (даже такой старый, как vi) и несколько строк кода, можно получить доступ как к публичным рыночным данным, так и к частным данным учетной записи, а также размещать/отменять ордера на рынках Kraken.

Пример кода

Следующий код демонстрирует реализацию на bash для вызова конечной точки REST API Balance:

#!/usr/bin/env bash

# API public/private keys copied from account management web site

api_key='gxTXpC4Ag/N0QPKlYnRhL1qVB2G/HZV1eB2drl7eOXga30dEKoB+EUMs'
api_private='62kRfRX7BI8G8T/jl7clnZ+vSfJt7YmQN23JQkJfHCE6oxecJX4fN4i2RitmRhyFzfJ4efKy2yCo4H068rfv0A=='

# API variables (URL, endpoint, nonce, etc.)

api_host='https://api.kraken.com'
api_endpoint='/0/private/Balance'
api_nonce=`date +%s`
api_post="nonce=$api_nonce"

# Authentication algorithm (SHA256 and HMAC SHA512)

api_private_hex=`echo -n $api_private base64 -d xxd -p tr -d "\n"`
echo -n $api_endpoint > kapi_bash.bin
echo -n $api_nonce$api_post openssl dgst -sha256 -binary >> kapi_bash.bin
api_sign=`cat kapi_bash.bin openssl dgst -binary -sha512 -mac HMAC -macopt hexkey:$api_private_hex base64`

# HTTP request (POST)

curl --header "API-Key: $api_key" --header "API-Sign: $api_sign" --data $api_post $api_host$api_endpoint

а соответствующий код также можно скачать (как файл kapi_bash.sh).

Дальнейшее использование/разработка

Чтобы получить баланс своего счета, пример ключа API следует заменить ключом API из вашей учетной записи Kraken, а дополнительные конечные точки API можно включить, просто изменив переменную api_endpoint и переменную api_post (при необходимости).

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