Ccxt: Kraken - 403 запрещенная ошибка при попытке получить минимальные заказы

Созданный на 14 апр. 2020  ·  7Комментарии  ·  Источник: ccxt/ccxt

Здравствуйте,

Интеграция Kraken кажется мне нарушенной после этого обновления: https://github.com/ccxt/ccxt/commit/89ee033e90c10b500c098ce3ed5a440c39c33dad#diff -5e85c8f10126d08bcbd8c3138002c7c0
В фиксации для "fetchMinLimitOrder" установлено значение true.
Но у Kraken есть механизм защиты, который требует, чтобы пользователи вводили капчу на своем веб-сайте для доступа к страницам. Думаю, когда эта защита включена, Kraken не загружает рынки.

Скажите, пожалуйста, ошибаюсь ли я в своих мыслях и возможно ли это исправить.

Спасибо,
Alex

duplicate question

Самый полезный комментарий

@alextousss Как указано в ответе https://support.kraken.com/hc/en-us/articles/205893708-What-is-the-minimum- размер заказа-.

Код html со страницы поддержки Kraken фиксируется, а теги html <td class="wysiwyg-text-align-right"> превращаются в массив, который используется для получения минимальных заказов.

Мое краткосрочное исправление (до тех пор, пока Kraken не добавит минимальные размеры заказа в конечную точку REST API AssetPairs), заключалось в том, чтобы предоставить html-код непосредственно в функцию fetch_min_order_amounts () в файле ccxt / kraken.php.

Вместо $html = $this->zendeskGet205893708WhatIsTheMinimumOrderSize ();

Я определил переменную $ html с текстом со страницы поддержки, используя функцию, которая вернула соответствующий текст.

Я просто создал следующую функцию, которая вернула соответствующий html-код, скопированный со страницы поддержки 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>';
}

а затем определил переменную $ html в функции fetch_min_order_amounts () в файле ccxt / kraken.php с вызовом вышеуказанной функции:

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

Это исправление, конечно, не идеально, так как обходной путь будет автоматически потерян при обновлении ccxt, но он работает. Кроме того, это исправление не представляет существенного изменения кода и может быть легко добавлено в любые будущие обновления.

Все 7 Комментарий

Об этом сообщалось ранее здесь:

Официальный ответ Кракена:

нам известно о недавней проблеме, с которой столкнулась CCXT, когда изменение безопасности на наших страницах поддержки не позволило получить минимальные размеры заказа через наши страницы поддержки. Наши разработчики REST API находятся в процессе добавления минимальных размеров заказа к конечной точке REST API AssetPairs, что сделает минимальные размеры заказа доступными более эффективно (и более надежно). У нас еще нет ожидаемой даты выхода этого обновления, но я буду отслеживать прогресс и сообщать вам, когда появится дополнительная информация.

А пока вы можете обойти проблему, установив для параметра fetchMinOrderAmounts значение false .

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

Таким образом вы потеряете информацию о минимальных пределах, но остальные функции будут продолжать работать.

Дайте мне знать, если это не ответ на вопрос.

Прошу прощения за дубликат, я искал "Kraken" на вкладке "Проблемы" только тогда, когда вы пометили мою проблему как Duplicate (на первой странице проблем не было упоминания Kraken).

Однако да, это подтверждает все, что я думал. Я исправил свою производственную систему, вернувшись к версии до упомянутой мною фиксации. В конце концов я отключу fetchMinOrderAmounts

Спасибо за ваш ответ и за ваше более широкое участие в ccxt.
Унифицировать 100 API-интерфейсов криптобиржи - непростая задача, но вы справились с ней прекрасно. Снимаю шляпу.

@alextousss спасибо за отзывы, очень признательны! Не сомневайтесь, если у вас возникнут дополнительные вопросы. Будем держать вас в курсе и сообщать, когда это будет исправлено на стороне Кракена.

@alextousss Как указано в ответе https://support.kraken.com/hc/en-us/articles/205893708-What-is-the-minimum- размер заказа-.

Код html со страницы поддержки Kraken фиксируется, а теги html <td class="wysiwyg-text-align-right"> превращаются в массив, который используется для получения минимальных заказов.

Мое краткосрочное исправление (до тех пор, пока Kraken не добавит минимальные размеры заказа в конечную точку REST API AssetPairs), заключалось в том, чтобы предоставить html-код непосредственно в функцию fetch_min_order_amounts () в файле ccxt / kraken.php.

Вместо $html = $this->zendeskGet205893708WhatIsTheMinimumOrderSize ();

Я определил переменную $ html с текстом со страницы поддержки, используя функцию, которая вернула соответствующий текст.

Я просто создал следующую функцию, которая вернула соответствующий html-код, скопированный со страницы поддержки 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>';
}

а затем определил переменную $ html в функции fetch_min_order_amounts () в файле ccxt / kraken.php с вызовом вышеуказанной функции:

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

Это исправление, конечно, не идеально, так как обходной путь будет автоматически потерян при обновлении ccxt, но он работает. Кроме того, это исправление не представляет существенного изменения кода и может быть легко добавлено в любые будущие обновления.

@ mjoh090 да, жесткое программирование ограничений - один из способов решения этой проблемы, когда вам действительно нужна эта информация.

С более широкой точки зрения, возможно ли иметь «стабильный режим», который отключал бы такие функции, которые не зависят от официальных и стабильных API? Разбирает ли ccxt справочные страницы для других бирж? Если я хорошо помню, эта проблема уже присутствовала при оплате сборов и вызвала у меня сильную головную боль.
Если вы его построите, я буду лучше спать ;-)

@alextousss Да, в целом мы стараемся сделать все "неофициальные" конечные точки необязательными, однако, возможно, в производных биржах еще остались некоторые особенности - мы сделаем все возможное, чтобы все это исправить. Я отключил его для Kraken (в 1.26.20), поэтому теперь по умолчанию этот параметр равен false .

Была ли эта страница полезной?
0 / 5 - 0 рейтинги