Ccxt: Kraken - 403 kesalahan terlarang saat mencoba mendapatkan pesanan minimal

Dibuat pada 14 Apr 2020  ·  7Komentar  ·  Sumber: ccxt/ccxt

Halo,

Integrasi Kraken tampaknya rusak bagi saya sejak pembaruan ini: https://github.com/ccxt/ccxt/commit/89ee033e90c10b500c098ce3ed5a440c39c33dad#diff -5e85c8f10126d08bc E5E5E5c3138002c7c0
Dalam komit, "fetchMinLimitOrder" telah disetel ke true.
Namun, Kraken memiliki mekanisme proteksi yang mengharuskan pengguna melengkapi captcha di situs webnya untuk mengakses halaman. Saya pikir ketika perlindungan ini diaktifkan, Kraken gagal memuat pasar.

Tolong beritahu saya jika saya salah dalam pemikiran saya dan apakah perbaikan mungkin dilakukan.

Terima kasih,
Alex

duplicate question

Komentar yang paling membantu

@alextousss Seperti yang ditunjukkan dalam tanggapan Kroitor di atas, ukuran pesanan minimum untuk Kraken diambil melalui halaman dukungan Kraken - https://support.kraken.com/hc/en-us/articles/205893708-What-is-the-minimum- pesanan-ukuran-.

Kode html dari halaman dukungan Kraken diambil dan tag html <td class="wysiwyg-text-align-right"> diledakkan menjadi sebuah array yang digunakan untuk mendapatkan min order.

Perbaikan jangka pendek saya (sampai Kraken menambahkan ukuran pesanan minimum ke titik akhir REST API AssetPairs) adalah memberikan kode html langsung ke fungsi fetch_min_order_amounts () di file ccxt / kraken.php.

Alih-alih $html = $this->zendeskGet205893708WhatIsTheMinimumOrderSize ();

Saya mendefinisikan variabel $ html dengan teks dari halaman dukungan menggunakan fungsi yang mengembalikan teks yang relevan.

Saya hanya membuat fungsi berikut yang mengembalikan kode html relevan yang disalin dari halaman dukungan kraken:

public function Minimum_Order_Size_Hard_Code(){

return '<td><strong>Base currency</strong></td>
<td class="wysiwyg-text-align-right"><strong>Order minimum</strong></td>
</tr>
<tr>
<td>Algorand</td>
<td class="wysiwyg-text-align-right">50 ALGO</td>
</tr>
<tr>
<td>Augur</td>
<td class="wysiwyg-text-align-right">0.3 REP</td>
</tr>
<tr>
<td>Basic Attention Token</td>
<td class="wysiwyg-text-align-right">50 BAT</td>
</tr>
<tr>
<td>Bitcoin</td>
<td class="wysiwyg-text-align-right">0.002 XBT</td>
</tr>
<tr>
<td>Bitcoin Cash</td>
<td class="wysiwyg-text-align-right">0.000002 BCH</td>
</tr>
<tr>
<td>Cardano</td>
<td class="wysiwyg-text-align-right">1 ADA</td>
</tr>
<tr>
<td>Chainlink</td>
<td class="wysiwyg-text-align-right">10 LINK</td>
</tr>
<tr>
<td>Cosmos</td>
<td class="wysiwyg-text-align-right">1 ATOM</td>
</tr>
<tr>
<td>DAI</td>
<td class="wysiwyg-text-align-right">10 DAI</td>
</tr>
<tr>
<td>Dash</td>
<td class="wysiwyg-text-align-right">0.03 DASH</td>
</tr>
<tr>
<td>Dogecoin</td>
<td class="wysiwyg-text-align-right">3000 XDG</td>
</tr>
<tr>
<td>EOS</td>
<td class="wysiwyg-text-align-right">3 EOS</td>
</tr>
<tr>
<td>Ethereum</td>
<td class="wysiwyg-text-align-right">0.02 ETH</td>
</tr>
<tr>
<td>Ethereum Classic</td>
<td class="wysiwyg-text-align-right">0.3 ETC</td>
</tr>
<tr>
<td>Gnosis</td>
<td class="wysiwyg-text-align-right">0.02 GNO</td>
</tr>
<tr>
<td>ICON</td>
<td class="wysiwyg-text-align-right">50 ICX</td>
</tr>
<tr>
<td>Lisk</td>
<td class="wysiwyg-text-align-right">10 LSK</td>
</tr>
<tr>
<td>Litecoin</td>
<td class="wysiwyg-text-align-right">0.1 LTC</td>
</tr>
<tr>
<td>Monero</td>
<td class="wysiwyg-text-align-right">0.1 XMR</td>
</tr>
<tr>
<td>Nano</td>
<td class="wysiwyg-text-align-right">10 NANO</td>
</tr>
<tr>
<td>OmiseGO</td>
<td class="wysiwyg-text-align-right">10 OMG</td>
</tr>
<tr>
<td>PAX Gold</td>
<td class="wysiwyg-text-align-right">0.01 PAXG</td>
</tr>
<tr>
<td>QTUM</td>
<td class="wysiwyg-text-align-right">0.1 QTUM</td>
</tr>
<tr>
<td>Ripple</td>
<td class="wysiwyg-text-align-right">30 XRP</td>
</tr>
<tr>
<td>Siacoin</td>
<td class="wysiwyg-text-align-right">5000 SC</td>
</tr>
<tr>
<td>Stellar Lumens</td>
<td class="wysiwyg-text-align-right">30 XLM</td>
</tr>
<tr>
<td>Tether</td>
<td class="wysiwyg-text-align-right">5 USDT</td>
</tr>
<tr>
<td>Tezos</td>
<td class="wysiwyg-text-align-right">1 XTZ</td>
</tr>
<tr>
<td>Tron</td>
<td class="wysiwyg-text-align-right">500 TRX</td>
</tr>
<tr>
<td>USD Coin</td>
<td class="wysiwyg-text-align-right">5 USDC</td>
</tr>
<tr>
<td>Watermelon</td>
<td class="wysiwyg-text-align-right">0.1 MLN</td>
</tr>
<tr>
<td>Waves</td>
<td class="wysiwyg-text-align-right">10 WAVES</td>
</tr>
<tr>
<td>Zcash</td>
<td class="wysiwyg-text-align-right">0.03 ZEC</td>
</tr>
<tr>
<td>Euro</td>
<td class="wysiwyg-text-align-right">10 EUR</td>
</tr>
<tr>
<td>US Dollar</td>
<td class="wysiwyg-text-align-right">10 USD</td>
</tr>
<tr>
<td>Great British Pound</td>
<td class="wysiwyg-text-align-right">10 GBP</td>
</tr>
</tbody>';
}

dan kemudian mendefinisikan variabel $ html dalam fungsi fetch_min_order_amounts () di file ccxt / kraken.php dengan panggilan ke fungsi di atas:

public function fetch_min_order_amounts() {
$html =  $this->Minimum_Order_Size_Hard_Code();
...

Perbaikan ini tentu saja tidak ideal, karena solusi tersebut secara otomatis akan hilang ketika ccxt diperbarui, tetapi berhasil. Selain itu, perbaikan ini tidak menunjukkan perubahan material pada kode, dan dapat dengan mudah ditambahkan ke pembaruan apa pun di masa mendatang.

Semua 7 komentar

Ini telah dilaporkan sebelumnya, di sini:

Jawaban resmi Kraken:

kami menyadari masalah terbaru yang dialami CCXT ketika perubahan keamanan pada halaman dukungan kami mencegah ukuran pesanan minimum diambil melalui halaman dukungan kami. Pengembang REST API kami sedang dalam proses menambahkan ukuran pesanan minimum ke titik akhir REST API AssetPairs, yang akan membuat ukuran pesanan minimum tersedia dengan lebih efisien (dan lebih andal). Kami belum memiliki tanggal ketersediaan yang diharapkan untuk pembaruan ini, tetapi saya akan terus memantau kemajuannya, dan memberi tahu Anda saat informasi lebih lanjut tersedia.

Sementara itu, Anda dapat mengatasi masalah tersebut, dengan menyetel fetchMinOrderAmounts opsi menjadi false .

exchange = ccxt.kraken({
    'enableRateLimit': True,
    'options': {  # ←--------------------- inside 'options' subkey
        'fetchMinOrderAmounts': False,  # ←---------- set to False 
    }
})

Dengan cara itu Anda akan kehilangan informasi secara efektif tentang batas minimal, tetapi fungsi lainnya akan tetap berfungsi.

Beri tahu saya jika itu tidak menjawab pertanyaannya.

Maaf atas duplikatnya, saya hanya menelusuri "Kraken" di tab masalah saat Anda menandai masalah saya sebagai Duplikat (tidak ada yang menyebutkan Kraken di halaman depan masalah).

Namun, ya, itu menegaskan semua yang saya pikirkan. Saya memperbaiki sistem produksi saya dengan kembali ke versi sebelum komit yang saya sebutkan. Dalam jangka panjang, saya akan menonaktifkan fetchMinOrderAmounts

Terima kasih atas tanggapan Anda, dan keterlibatan Anda yang lebih luas dalam ccxt.
Bukan tugas yang mudah untuk menyatukan 100 API pertukaran crypto, tetapi Anda telah melakukannya dengan luar biasa. Hormat.

@alextousss thx untuk umpan baliknya, sangat kami hargai! Jangan ragu jika Anda memiliki pertanyaan lebih lanjut. Akan terus memperbarui Anda dan akan memberi tahu Anda ketika sudah diperbaiki di sisi Kraken.

@alextousss Seperti yang ditunjukkan dalam tanggapan Kroitor di atas, ukuran pesanan minimum untuk Kraken diambil melalui halaman dukungan Kraken - https://support.kraken.com/hc/en-us/articles/205893708-What-is-the-minimum- pesanan-ukuran-.

Kode html dari halaman dukungan Kraken diambil dan tag html <td class="wysiwyg-text-align-right"> diledakkan menjadi sebuah array yang digunakan untuk mendapatkan min order.

Perbaikan jangka pendek saya (sampai Kraken menambahkan ukuran pesanan minimum ke titik akhir REST API AssetPairs) adalah memberikan kode html langsung ke fungsi fetch_min_order_amounts () di file ccxt / kraken.php.

Alih-alih $html = $this->zendeskGet205893708WhatIsTheMinimumOrderSize ();

Saya mendefinisikan variabel $ html dengan teks dari halaman dukungan menggunakan fungsi yang mengembalikan teks yang relevan.

Saya hanya membuat fungsi berikut yang mengembalikan kode html relevan yang disalin dari halaman dukungan kraken:

public function Minimum_Order_Size_Hard_Code(){

return '<td><strong>Base currency</strong></td>
<td class="wysiwyg-text-align-right"><strong>Order minimum</strong></td>
</tr>
<tr>
<td>Algorand</td>
<td class="wysiwyg-text-align-right">50 ALGO</td>
</tr>
<tr>
<td>Augur</td>
<td class="wysiwyg-text-align-right">0.3 REP</td>
</tr>
<tr>
<td>Basic Attention Token</td>
<td class="wysiwyg-text-align-right">50 BAT</td>
</tr>
<tr>
<td>Bitcoin</td>
<td class="wysiwyg-text-align-right">0.002 XBT</td>
</tr>
<tr>
<td>Bitcoin Cash</td>
<td class="wysiwyg-text-align-right">0.000002 BCH</td>
</tr>
<tr>
<td>Cardano</td>
<td class="wysiwyg-text-align-right">1 ADA</td>
</tr>
<tr>
<td>Chainlink</td>
<td class="wysiwyg-text-align-right">10 LINK</td>
</tr>
<tr>
<td>Cosmos</td>
<td class="wysiwyg-text-align-right">1 ATOM</td>
</tr>
<tr>
<td>DAI</td>
<td class="wysiwyg-text-align-right">10 DAI</td>
</tr>
<tr>
<td>Dash</td>
<td class="wysiwyg-text-align-right">0.03 DASH</td>
</tr>
<tr>
<td>Dogecoin</td>
<td class="wysiwyg-text-align-right">3000 XDG</td>
</tr>
<tr>
<td>EOS</td>
<td class="wysiwyg-text-align-right">3 EOS</td>
</tr>
<tr>
<td>Ethereum</td>
<td class="wysiwyg-text-align-right">0.02 ETH</td>
</tr>
<tr>
<td>Ethereum Classic</td>
<td class="wysiwyg-text-align-right">0.3 ETC</td>
</tr>
<tr>
<td>Gnosis</td>
<td class="wysiwyg-text-align-right">0.02 GNO</td>
</tr>
<tr>
<td>ICON</td>
<td class="wysiwyg-text-align-right">50 ICX</td>
</tr>
<tr>
<td>Lisk</td>
<td class="wysiwyg-text-align-right">10 LSK</td>
</tr>
<tr>
<td>Litecoin</td>
<td class="wysiwyg-text-align-right">0.1 LTC</td>
</tr>
<tr>
<td>Monero</td>
<td class="wysiwyg-text-align-right">0.1 XMR</td>
</tr>
<tr>
<td>Nano</td>
<td class="wysiwyg-text-align-right">10 NANO</td>
</tr>
<tr>
<td>OmiseGO</td>
<td class="wysiwyg-text-align-right">10 OMG</td>
</tr>
<tr>
<td>PAX Gold</td>
<td class="wysiwyg-text-align-right">0.01 PAXG</td>
</tr>
<tr>
<td>QTUM</td>
<td class="wysiwyg-text-align-right">0.1 QTUM</td>
</tr>
<tr>
<td>Ripple</td>
<td class="wysiwyg-text-align-right">30 XRP</td>
</tr>
<tr>
<td>Siacoin</td>
<td class="wysiwyg-text-align-right">5000 SC</td>
</tr>
<tr>
<td>Stellar Lumens</td>
<td class="wysiwyg-text-align-right">30 XLM</td>
</tr>
<tr>
<td>Tether</td>
<td class="wysiwyg-text-align-right">5 USDT</td>
</tr>
<tr>
<td>Tezos</td>
<td class="wysiwyg-text-align-right">1 XTZ</td>
</tr>
<tr>
<td>Tron</td>
<td class="wysiwyg-text-align-right">500 TRX</td>
</tr>
<tr>
<td>USD Coin</td>
<td class="wysiwyg-text-align-right">5 USDC</td>
</tr>
<tr>
<td>Watermelon</td>
<td class="wysiwyg-text-align-right">0.1 MLN</td>
</tr>
<tr>
<td>Waves</td>
<td class="wysiwyg-text-align-right">10 WAVES</td>
</tr>
<tr>
<td>Zcash</td>
<td class="wysiwyg-text-align-right">0.03 ZEC</td>
</tr>
<tr>
<td>Euro</td>
<td class="wysiwyg-text-align-right">10 EUR</td>
</tr>
<tr>
<td>US Dollar</td>
<td class="wysiwyg-text-align-right">10 USD</td>
</tr>
<tr>
<td>Great British Pound</td>
<td class="wysiwyg-text-align-right">10 GBP</td>
</tr>
</tbody>';
}

dan kemudian mendefinisikan variabel $ html dalam fungsi fetch_min_order_amounts () di file ccxt / kraken.php dengan panggilan ke fungsi di atas:

public function fetch_min_order_amounts() {
$html =  $this->Minimum_Order_Size_Hard_Code();
...

Perbaikan ini tentu saja tidak ideal, karena solusi tersebut secara otomatis akan hilang ketika ccxt diperbarui, tetapi berhasil. Selain itu, perbaikan ini tidak menunjukkan perubahan material pada kode, dan dapat dengan mudah ditambahkan ke pembaruan apa pun di masa mendatang.

@ mjoh090 ya, hardcoding batas adalah salah satu cara untuk mengatasi masalah ini, saat Anda benar-benar membutuhkan informasi itu.

Dari perspektif yang lebih luas, apakah mungkin memiliki "mode stabil" yang akan menonaktifkan fitur semacam itu yang tidak bergantung pada API resmi dan stabil? Apakah halaman bantuan parsing ccxt untuk pertukaran lain? Masalah ini sudah ada untuk biaya jika saya ingat dengan baik dan membuat saya sangat pusing.
Jika Anda membangunnya, saya akan tidur lebih nyenyak ;-)

@alextousss ya, secara umum kami mencoba membuat semua endpoint "tidak resmi" opsional, namun, mungkin ada beberapa kebiasaan yang masih tersisa di bursa turunan - akan melakukan yang terbaik untuk membersihkan semuanya. Saya telah mematikannya untuk Kraken (di 1.26.20), jadi opsi itu sekarang false secara default.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat