Ccxt: Kraken-最小限の注文を取得しようとしたときの403禁止エラー

作成日 2020年04月14日  ·  7コメント  ·  ソース: ccxt/ccxt

こんにちは、

この更新以降、Krakenの統合は壊れているようです: https
コミットでは、「fetchMinLimitOrder」がtrueに設定されています。
ただし、Krakenには、ユーザーがページにアクセスするためにWebサイトでキャプチャを完了する必要がある保護メカニズムがあります。 この保護が有効になっていると、Krakenは市場をロードできないと思います。

私の考えが間違っているかどうか、そして修正が可能かどうかを教えてください。

ありがとうございました、
アレックス

duplicate question

最も参考になるコメント

@alextousss上記のKroitorの応答に示されているように、Krakenの最小注文サイズはKrakenサポートページ( https://support.kraken.com/hc/en-us/articles/205893708-What-is-the-minimum-)から取得され

Krakenサポートページのhtmlコードがキャプチャされ、htmlタグ<td class="wysiwyg-text-align-right">が、最小次数を導出するために使用される配列に展開されます。

私の短期的な修正(KrakenがREST API AssetPairsエンドポイントに最小注文サイズを追加するまで)は、ccxt / kraken.phpファイルのfetch_min_order_amounts()関数にhtmlコードを直接提供することでした。

$html = $this->zendeskGet205893708WhatIsTheMinimumOrderSize ();代わりに

関連するテキストを返す関数を使用して、サポートページのテキストで変数$ htmlを定義しました。

krakenサポートページからコピーされた関連するhtmlコードを返す次の関数を作成しただけです。

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>';
}

次に、上記の関数を呼び出して、ccxt / kraken.phpファイルのfetch_min_order_amounts()関数で$ html変数を定義します。

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

もちろん、この修正は理想的ではありません。ccxtが更新されると回避策が自動的に失われるためですが、機能します。 また、この修正はコードの重要な変更を表すものではなく、将来の更新に簡単に追加できます。

全てのコメント7件

これは以前にここで報告されています:

クラーケンの公式回答:

サポートページのセキュリティ変更により、サポートページから最小注文サイズを取得できなくなったときにCCXTで発生した最近の問題を認識しています。 私たちのRESTAPI開発者は、最小注文サイズをREST API AssetPairsエンドポイントに追加する過程にあります。これにより、最小注文サイズをより効率的に(そしてより確実に)利用できるようになります。 このアップデートの利用可能予定日はまだ決まっていませんが、進捗状況を追跡し、さらに情報が利用可能になったらお知らせします。

それまでの間、 fetchMinOrderAmountsオプションをfalse設定することで、問題を回避できます。

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

そうすれば、最小制限に関する情報が事実上失われますが、他の機能は引き続き機能します。

それでも質問に答えられない場合はお知らせください。

重複して申し訳ありません。問題を重複としてマークした場合にのみ、[問題]タブで「Kraken」を検索しました(問題の最初のページにKrakenについての言及はありませんでした)。

しかし、はい、それは私が思ったすべてを確認します。 言及したコミット前のバージョンに戻ることで、本番システムを修正しました。 長期的には、fetchMinOrderAmountsを無効にします

ご回答、およびccxtへの幅広い関与に感謝します。
100個の暗号交換のAPIを統合するのは簡単な作業ではありませんが、あなたはそれを素晴らしく行いました。 脱帽。

フィードバックのための@alextousssthx 、本当に感謝します! ご不明な点がございましたら、お気軽にお問い合わせください。 最新の状態に保ち、Kraken側で修正されたときに通知します。

@alextousss上記のKroitorの応答に示されているように、Krakenの最小注文サイズはKrakenサポートページ( https://support.kraken.com/hc/en-us/articles/205893708-What-is-the-minimum-)から取得され

Krakenサポートページのhtmlコードがキャプチャされ、htmlタグ<td class="wysiwyg-text-align-right">が、最小次数を導出するために使用される配列に展開されます。

私の短期的な修正(KrakenがREST API AssetPairsエンドポイントに最小注文サイズを追加するまで)は、ccxt / kraken.phpファイルのfetch_min_order_amounts()関数にhtmlコードを直接提供することでした。

$html = $this->zendeskGet205893708WhatIsTheMinimumOrderSize ();代わりに

関連するテキストを返す関数を使用して、サポートページのテキストで変数$ htmlを定義しました。

krakenサポートページからコピーされた関連するhtmlコードを返す次の関数を作成しただけです。

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>';
}

次に、上記の関数を呼び出して、ccxt / kraken.phpファイルのfetch_min_order_amounts()関数で$ html変数を定義します。

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

もちろん、この修正は理想的ではありません。ccxtが更新されると回避策が自動的に失われるためですが、機能します。 また、この修正はコードの重要な変更を表すものではなく、将来の更新に簡単に追加できます。

@ mjoh090はい、制限をハードコーディングすることは、本当にその情報が必要な場合に、この問題を回避する方法の1つです。

より広い観点から、公式で安定したAPIに依存しないその種の機能を無効にする「安定モード」を持つことは可能でしょうか? ccxtは他の取引所のヘルプページを解析していますか? 私がよく覚えていて、私に大きな頭痛を引き起こしたならば、この問題はすでに有料で存在していました。
あなたがそれを造れば、私はより良い睡眠をとるでしょう;-)

@alextousssはい、一般的に、すべての「非公式」エンドポイントをオプションにしようとしていますが、派生した交換にまだいくつかの癖が残っている可能性があります-すべてをクリーンアップするために最善を尽くします。 Kraken(1.26.20)ではオフにしたので、オプションはデフォルトでfalseました。

このページは役に立ちましたか?
0 / 5 - 0 評価