Bash kullanarak REST API isteği örneği

Son güncelleme: 31 Mart 2025

Giriş

Kraken REST API arayüzünü Bourne Again shell (bash) ve bazı ilişkili komutlar (openssl, base64, xxd vb.) kullanarak uygulamak, Kraken piyasalarıyla etkileşim kurmak için kullanışlı ve verimli bir çözüm olabilir (ancak derlenmiş koda kıyasla en hızlı uygulama olmazdı).

Bash ve gerekli komutlar çoğu UNIX, Linux ve macOS sisteminde kolayca erişilebilir (önceden yüklenmiş) durumdadır ve Windows ve diğer sistemlere kolayca yüklenebilir, bu nedenle gerekli tüm yazılımlar ek üçüncü taraf API araçları veya kütüphaneleri kullanmadan mevcuttur.

Düz bir metin düzenleyici (hatta vi gibi eski tarz bir düzenleyici) ve birkaç satır kod kullanarak, hem genel piyasa verilerine hem de özel hesap verilerine erişmek ve ayrıca Kraken piyasalarında emir vermek/iptal etmek mümkündür.

Örnek Kod

Aşağıdaki kod, REST API Balance uç noktasını çağırmak için bir bash kodu uygulamasını göstermektedir:

#!/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

ve eşleşen kod indirilebilir (kapi_bash.sh dosyası olarak).

Daha Fazla Kullanım/Geliştirme

Kendi hesap bakiyelerinizi almak için, örnek API anahtarı, kendi Kraken hesabınızdan bir API anahtarı ile değiştirilmelidir ve ek API uç noktaları, api_endpoint değişkeni ve api_post değişkeni (gerekirse) değiştirilerek kolayca etkinleştirilebilir.

Daha fazla yardıma mı ihtiyacınız var?