Ccxt: Kraken - خطأ ممنوع 403 عند محاولة الحصول على الحد الأدنى من الطلبات

تم إنشاؤها على ١٤ أبريل ٢٠٢٠  ·  7تعليقات  ·  مصدر: ccxt/ccxt

مرحبا،

يبدو أن تكامل Kraken معطلاً بالنسبة لي منذ هذا التحديث: https://github.com/ccxt/ccxt/commit/89ee033e90c10b500c098ce3ed5a440c39c33dad#diff -5e85c8f10126d08bcassignc3138002c7c0
في الالتزام ، تم تعيين "fetchMinLimitOrder" على true.
لكن لدى Kraken آلية حماية تتطلب من المستخدمين إكمال اختبار captcha على موقع الويب الخاص بهم للوصول إلى الصفحات. أعتقد أنه عندما يتم تمكين هذه الحماية ، يفشل Kraken في تحميل الأسواق.

من فضلك قل لي إذا كنت مخطئا في تفكيري وما إذا كان الإصلاح ممكنًا.

شكرا لك،
اليكس

duplicate question

التعليق الأكثر فائدة

alextousss كما هو موضح في رد Kroitor أعلاه ، يتم استرداد الحد الأدنى لحجم طلب Kraken عبر صفحة دعم Kraken - 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 () n ملف ccxt / kraken.php باستدعاء الوظيفة أعلاه:

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

هذا الإصلاح بالطبع ليس مثاليًا ، حيث سيتم فقد الحل البديل تلقائيًا عند تحديث ccxt ، لكنه يعمل. أيضًا ، لا يمثل هذا الإصلاح تغييرًا جوهريًا في التعليمات البرمجية ، ويمكن بسهولة إضافته إلى أي تحديثات مستقبلية.

ال 7 كومينتر

تم الإبلاغ عن هذا سابقًا ، هنا:

الجواب الرسمي لشركة Kraken:

نحن على علم بالمشكلة الأخيرة التي واجهتها CCXT عندما أدى تغيير أمني لصفحات الدعم الخاصة بنا إلى منع استرداد الحد الأدنى من أحجام الطلبات عبر صفحات الدعم الخاصة بنا. يعمل مطورو REST API لدينا على إضافة الحد الأدنى من أحجام الطلبات إلى نقطة نهاية REST API AssetPairs ، مما يجعل الحد الأدنى لأحجام الطلبات متاحًا بشكل أكثر كفاءة (وأكثر موثوقية). ليس لدينا تاريخ إتاحة متوقع لهذا التحديث حتى الآن ، لكنني سأتابع التقدم ، وأعلمك عند توفر مزيد من المعلومات.

في غضون ذلك ، يمكنك حل المشكلة عن طريق تعيين الخيار fetchMinOrderAmounts إلى false .

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

بهذه الطريقة ستفقد بشكل فعال المعلومات المتعلقة بالحد الأدنى من الحدود ، لكن الوظائف الأخرى ستستمر في العمل.

اسمحوا لي أن أعرف إذا كان هذا لا يجيب على السؤال.

أنا آسف للنسخة المكررة ، لقد بحثت فقط عن "Kraken" في علامة تبويب "المشكلات" عندما وضعت علامة على مشكلتي على أنها مكررة (لم يرد ذكر لـ Kraken في الصفحة الأولى للمشكلات).

ومع ذلك ، نعم ، إنه يؤكد كل ما كنت أعتقده. لقد أصلحت نظام الإنتاج الخاص بي بالرجوع إلى الإصدار قبل الالتزام الذي ذكرته. على المدى الطويل ، سأقوم بتعطيل fetchMinOrderAmounts

شكرًا لك على ردك ومشاركتك الأوسع في ccxt.
ليس من السهل توحيد 100 واجهة برمجة تطبيقات لتبادل العملات المشفرة ، لكنك قمت بذلك بشكل رائع. القبعات قبالة.

alextousss thx على التعليقات ، أقدر ذلك حقًا! لا تتردد إذا كان لديك المزيد من الأسئلة. سنبقيك على اطلاع وسيعلمك عندما يتم إصلاحه من جانب Kraken.

alextousss كما هو موضح في رد Kroitor أعلاه ، يتم استرداد الحد الأدنى لحجم طلب Kraken عبر صفحة دعم Kraken - 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 () n ملف ccxt / kraken.php باستدعاء الوظيفة أعلاه:

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

هذا الإصلاح بالطبع ليس مثاليًا ، حيث سيتم فقد الحل البديل تلقائيًا عند تحديث ccxt ، لكنه يعمل. أيضًا ، لا يمثل هذا الإصلاح تغييرًا جوهريًا في التعليمات البرمجية ، ويمكن بسهولة إضافته إلى أي تحديثات مستقبلية.

@ mjoh090 نعم ،

من منظور أوسع ، هل من الممكن أن يكون لديك "وضع مستقر" من شأنه تعطيل هذا النوع من الميزات التي لا تعتمد على واجهات برمجة التطبيقات الرسمية والمستقرة؟ هل يقوم ccxt بتحليل صفحات المساعدة للتبادلات الأخرى؟ كانت هذه المشكلة موجودة بالفعل مقابل الرسوم إذا كنت أتذكر جيدًا وتسببت في صداع كبير.
إذا قمت ببنائه ، فسوف أنام بشكل أفضل ؛-)

alextousss نعم ، بشكل عام نحاول جعل جميع نقاط النهاية "غير الرسمية" اختيارية ، ومع ذلك ، قد تكون هناك بعض المراوغات المتبقية في التبادلات المشتقة - سنبذل قصارى جهدنا لتنظيفها بالكامل. لقد قمت بإيقاف تشغيله لـ Kraken (في 1.26.20) ، لذلك أصبح هذا الخيار الآن false افتراضيًا.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات