Ccxt: Kraken: error prohibido 403 al intentar obtener pedidos mínimos

Creado en 14 abr. 2020  ·  7Comentarios  ·  Fuente: ccxt/ccxt

Hola,

La integración de Kraken parece rota para mí desde esta actualización: https://github.com/ccxt/ccxt/commit/89ee033e90c10b500c098ce3ed5a440c39c33dad#diff -5e85c8f10126d08bcbd8c3138002c7c0
En la confirmación, "fetchMinLimitOrder" se ha establecido en verdadero.
Pero, Kraken tiene un mecanismo de protección que requiere que los usuarios completen un captcha en su sitio web para acceder a las páginas. Creo que cuando esta protección está habilitada, Kraken no logra cargar los mercados.

Por favor, dígame si estoy equivocado en mi forma de pensar y si es posible solucionarlo.

Gracias,
Alex

duplicate question

Comentario más útil

@alextousss Como se indica en la respuesta de Kroitor anterior, el tamaño mínimo de pedido para Kraken se recupera a través de la página de soporte de Kraken: https://support.kraken.com/hc/en-us/articles/205893708-What-is-the-minimum- orden-tamaño-.

Se captura el código html de la página de soporte de Kraken y las etiquetas html <td class="wysiwyg-text-align-right"> se descomponen en una matriz que se utiliza para derivar los pedidos mínimos.

Mi solución a corto plazo (hasta que Kraken agregue los tamaños mínimos de pedido al punto final de la API REST AssetPairs) fue proporcionar el código html directamente a la función fetch_min_order_amounts () en el archivo ccxt / kraken.php.

En lugar de $html = $this->zendeskGet205893708WhatIsTheMinimumOrderSize ();

Definí la variable $ html con el texto de la página de soporte usando una función que devolvió el texto relevante.

Simplemente creé la siguiente función que devolvió el código html relevante copiado de la página de soporte de 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>';
}

y luego definió la variable $ html en la función fetch_min_order_amounts () en el archivo ccxt / kraken.php con una llamada a la función anterior:

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

Esta solución, por supuesto, no es ideal, ya que la solución se perderá automáticamente cuando se actualice ccxt, pero funciona. Además, esta corrección no representa un cambio sustancial en el código y se puede agregar fácilmente a futuras actualizaciones.

Todos 7 comentarios

Esto se ha informado anteriormente, aquí:

Respuesta oficial de Kraken:

Somos conscientes del problema reciente que experimentó CCXT cuando un cambio de seguridad en nuestras páginas de soporte impidió que se recuperaran los tamaños mínimos de pedido a través de nuestras páginas de soporte. Nuestros desarrolladores de API REST están en el proceso de agregar los tamaños mínimos de pedido al punto final de AssetPairs de API REST, lo que haría que los tamaños mínimos de pedido estuvieran disponibles de manera más eficiente (y más confiable). Aún no tenemos una fecha de disponibilidad esperada para esta actualización, pero haré un seguimiento del progreso y les avisaré cuando haya más información disponible.

Mientras tanto, puede solucionar el problema configurando la opción fetchMinOrderAmounts en false .

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

De esa manera, efectivamente perderá la información sobre los límites mínimos, pero la otra funcionalidad seguirá funcionando.

Avísame si eso no responde a la pregunta.

Lo siento por el duplicado, solo busqué "Kraken" en la pestaña de problemas cuando marcó mi problema como Duplicado (no se mencionó a Kraken en la página principal de los problemas).

Sin embargo, sí, confirma todo lo que pensaba. Arreglé mi sistema de producción volviendo a la versión anterior al compromiso que mencioné. A largo plazo, deshabilitaré fetchMinOrderAmounts

Gracias por su respuesta y su participación más amplia en ccxt.
No es una tarea fácil unificar 100 API de intercambio de cifrado, pero lo ha hecho de maravilla. Felicitaciones.

@alextousss gracias por los comentarios, ¡realmente lo aprecio! No lo dudes si tienes más preguntas. Lo mantendrá actualizado y le avisará cuando esté arreglado en el lado del Kraken.

@alextousss Como se indica en la respuesta de Kroitor anterior, el tamaño mínimo de pedido para Kraken se recupera a través de la página de soporte de Kraken: https://support.kraken.com/hc/en-us/articles/205893708-What-is-the-minimum- orden-tamaño-.

Se captura el código html de la página de soporte de Kraken y las etiquetas html <td class="wysiwyg-text-align-right"> se descomponen en una matriz que se utiliza para derivar los pedidos mínimos.

Mi solución a corto plazo (hasta que Kraken agregue los tamaños mínimos de pedido al punto final de la API REST AssetPairs) fue proporcionar el código html directamente a la función fetch_min_order_amounts () en el archivo ccxt / kraken.php.

En lugar de $html = $this->zendeskGet205893708WhatIsTheMinimumOrderSize ();

Definí la variable $ html con el texto de la página de soporte usando una función que devolvió el texto relevante.

Simplemente creé la siguiente función que devolvió el código html relevante copiado de la página de soporte de 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>';
}

y luego definió la variable $ html en la función fetch_min_order_amounts () en el archivo ccxt / kraken.php con una llamada a la función anterior:

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

Esta solución, por supuesto, no es ideal, ya que la solución se perderá automáticamente cuando se actualice ccxt, pero funciona. Además, esta corrección no representa un cambio sustancial en el código y se puede agregar fácilmente a futuras actualizaciones.

@ mjoh090 sí, codificar los límites es una de las formas de solucionar este problema, cuando realmente necesita esa información.

Desde una perspectiva más amplia, ¿sería posible tener un "modo estable" que deshabilitara ese tipo de función que no depende de API oficiales y estables? ¿CCxt está analizando páginas de ayuda para otros intercambios? Este problema ya estaba presente por las tarifas si recuerdo bien y me causó un gran dolor de cabeza.
Si lo construyes, dormiré mejor ;-)

@alextousss sí, en general estamos tratando de hacer que todos los puntos finales "no oficiales" sean opcionales, sin embargo, puede que todavía queden algunas peculiaridades en los intercambios derivados; haremos todo lo posible para limpiarlo todo. Lo apagué para Kraken (en 1.26.20), por lo que esa opción ahora es false por defecto.

¿Fue útil esta página
0 / 5 - 0 calificaciones