Ccxt: Binance SSL: CERTIFICATE_VERIFY_FAILED

تم إنشاؤها على ١٨ ديسمبر ٢٠١٧  ·  39تعليقات  ·  مصدر: ccxt/ccxt

أحاول الاتصال بـ binance ، وأختبر فقط وظيفة load_markets ، لكني أتلقى خطأ SSL.

bin = ccxt.binance({'apiKey':BinanceKey1,'secret':BinanceSecret1})
bin.verbose = True
bin.load_markets()

والإخراج:

https://api.binance.com/api/v1/exchangeInfo GET https://api.binance.com/api/v1/exchangeInfo 
Request: {'User-Agent': 'ccxt/1.10.343 (+https://github.com/ccxt/ccxt) Python/3.6.3', 'Accept-Encoding': 'gzip, deflate'} None
Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 1318, in do_open
    encode_chunked=req.has_header('Transfer-encoding'))
  File "C:\ProgramData\Anaconda3\lib\http\client.py", line 1239, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "C:\ProgramData\Anaconda3\lib\http\client.py", line 1285, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "C:\ProgramData\Anaconda3\lib\http\client.py", line 1234, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "C:\ProgramData\Anaconda3\lib\http\client.py", line 1026, in _send_output
    self.send(msg)
  File "C:\ProgramData\Anaconda3\lib\http\client.py", line 964, in send
    self.connect()
  File "C:\ProgramData\Anaconda3\lib\http\client.py", line 1400, in connect
    server_hostname=server_hostname)
  File "C:\ProgramData\Anaconda3\lib\ssl.py", line 407, in wrap_socket
    _context=self, _session=session)
  File "C:\ProgramData\Anaconda3\lib\ssl.py", line 814, in __init__
    self.do_handshake()
  File "C:\ProgramData\Anaconda3\lib\ssl.py", line 1068, in do_handshake
    self._sslobj.do_handshake()
  File "C:\ProgramData\Anaconda3\lib\ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\ccxt\base\exchange.py", line 319, in fetch
    response = opener.open(request, timeout=int(self.timeout / 1000))
  File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 526, in open
    response = self._open(req, data)
  File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 544, in _open
    '_open', req)
  File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 504, in _call_chain
    result = func(*args)
  File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 1361, in https_open
    context=self._context, check_hostname=self._check_hostname)
  File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 1320, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/scoss/PycharmProjects/Bitcoin/ccxt_test.py", line 31, in <module>
    bin.load_markets()
  File "C:\ProgramData\Anaconda3\lib\site-packages\ccxt\base\exchange.py", line 786, in load_markets
    markets = self.fetch_markets()
  File "C:\ProgramData\Anaconda3\lib\site-packages\ccxt\binance.py", line 237, in fetch_markets
    response = self.publicGetExchangeInfo()
  File "C:\ProgramData\Anaconda3\lib\site-packages\ccxt\binance.py", line 669, in request
    response = self.fetch2(path, api, method, params, headers, body)
  File "C:\ProgramData\Anaconda3\lib\site-packages\ccxt\base\exchange.py", line 277, in fetch2
    return self.fetch(request['url'], request['method'], request['headers'], request['body'])
  File "C:\ProgramData\Anaconda3\lib\site-packages\ccxt\base\exchange.py", line 338, in fetch
    self.raise_error(ExchangeNotAvailable, url, method, e)
  File "C:\ProgramData\Anaconda3\lib\site-packages\ccxt\base\exchange.py", line 259, in raise_error
    details,
ccxt.base.errors.ExchangeNotAvailable: binance GET https://api.binance.com/api/v1/exchangeInfo <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)> 

عدم وجود مشكلات مع التبادلات الأخرى ، ويعمل هذا الزوج الرئيسي / السري بدون ccxt

question

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

تم إصلاح هذه المشكلة في الإصدار 1.10.436. هل يمكنكم اختبارها والتحقق منها من فضلكم؟ سنكون شاكرين لتقاريرك!

ال 39 كومينتر

هل انت مقيم في الصين

أنا موجود في أستراليا

scoshil هل يمكنك الوصول إليه عبر وكيل CORS عام؟

bin = ccxt.binance({
    'apiKey':BinanceKey1,
    'secret':BinanceSecret1,
    'proxy': 'https://cors-anywhere.herokuapp.com/',  # last slash critical
})
bin.verbose = True
bin.load_markets()

أنظر أيضا:

يبدو أن هناك مشكلة في شهادات Anaconda Python أو إعدادات المرجع المصدق الجذر ... هل رأيت أي خيارات بخصوص شهادات SSL عند تثبيتها؟ هل يمكنك التحقق من أنه يمكنه الوصول إلى شهادات نظامك / OpenSSL؟

ويعمل هذا الزوج / المفتاح السري بدون ccxt

هل اختبرت زوج المفاتيح هذا مع أي برنامج آخر؟ هل يمكنك توضيح كيف "يعمل" بالضبط؟

لقد اختبرت هذا الزوج مع lib على https://github.com/sammchardy/python-binance وعمل بسلاسة ... لم أتطلع لمعرفة ما إذا كان هذا lib يفعل أي شيء مميز مع الوكلاء حتى الآن ، لكنني لم أفعل تكوينه بشكل مختلف عن المعتاد.

سأبحث في هذه الروابط وأرى ما إذا كان بإمكاني إصلاحها بهذه الطريقة.

في صحتك

scoshil حسنًا ،

scoshil هل يمكنك لصق مقتطف الشفرة هنا الذي استخدمته مع https://github.com/sammchardy/python-binance للاختبار ، من فضلك؟

هل تقصد من بايثون بينانس؟

كود الاختبار:

from binance.client import Client
client = Client(BinanceKey1,BinanceSecret1)
    order = client.create_order(symbol='BTCUSDT',side="SELL",type="LIMIT",price=21000,quantity=0.001,timeInForce='GTC')
    print(order)

انتاج:

{'symbol': 'BTCUSDT', 'orderId': 10690384, 'clientOrderId': 'w4N8ngpjd4lZvF2Pn8XfZa', 'transactTime': 1513577527632, 'price': '21000.00000000', 'origQty': '0.00100000', 'executedQty': '0.00000000', 'status': 'NEW', 'timeInForce': 'GTC', 'type': 'LIMIT', 'side': 'SELL'}

نعم شكرا...

هل هذا يساعد في ccxt؟

https://github.com/ContinuumIO/anaconda-issues/issues/494#issuecomment -156177729

@ kroitor لقد جربت ذلك وما زال يعطيني نفس الخطأ للأسف

يعملscoshil python-binance لأنه يستخدم حزمة python requests ، وهذا بدوره يرتبط أيضًا بشهادات SSL غير الافتراضية من الحزمة certifi . يستخدم ccxt بروتوكول HTTP مدمجًا تمامًا ولسبب ما ، لن يجد تثبيت معين لـ conda شهادات SSL / CA الافتراضية الخاصة به ... إذا لم تساعد أي من الروابط والاقتراحات أعلاه ، فقد ننتقل إلى requests كذلك. هل يمكنك معرفة مكان تخزين الشهادات على نظامك؟

أقترح أيضًا تجربة هذا: https://stackoverflow.com/questions/33699577/conda-update-failed-ssl-error-ssl-certificate-verify-failed-certificate-ver (أو google لمزيد من "anaconda SSL "أو" conda SSL "،" anaconda ssl check "، إلخ ...)

إذا لم يساعد أي شيء ، فسوف أقوم بتثبيت نظيف لـ Anaconda Python على جهاز كمبيوتر افتراضي يعمل بنظام Windows وسأختبره / أصلحه بعد ذلك ...

scoshil ، هل يمكنك ، من فضلك ، محاولة إعادة تثبيت أناكوندا بيثون؟ (توزيع جديد من موقعهم ، إذا كان هذا مناسبًا لك) ... يمكنك مساعدتنا في استبعاد أحد الأسباب المحتملة لذلك ...

شكرًا ، سأحاول الأشياء التي ذكرتها والإبلاغ عنها ... قد يستغرق مني بعض الوقت للقيام بتثبيت أناكوندا نظيف

حسنًا ، لقد جربت ما يلي:

حقا من الأفكار في هذه المرحلة ...

scoshil حسنًا ، شكرًا جزيلاً requests+certifi للحصول على شهادات SSL الخاصة بهم ، وسأخبرك بالتقدم ، ونأمل أن يكون قريبًا جدًا.

شكر!

scoshil لا يمكنني إعادة إنتاج المشكلة من جهاز Windows 10 الخاص بي من روسيا ، يمكنني الوصول إلى Binance بشكل طبيعي ...

screen shot 2017-12-19 at 10 09 02

كما ترى ، يعمل تثبيت جديد لـ Anaconda3 من جانبي ... لذلك ، ربما لديك بعض الشهادات القديمة أو شيء من هذا القبيل ... ومع ذلك ، لا أعرف ما إذا كان ذلك منطقيًا ، لأنك قمت بإعادة تثبيت نظيفة. ..

بعد تثبيت أناكوندا ، وجدت هاتين الشهادتين في الإعداد الخاص بي C:\Users\myusername\AppData\local\Continuum\anaconda3\ssl :

cert.zip

يمكنك محاولة نسخها إلى مجلد ssl لمعرفة ما إذا كانت تحدث أي فرق (احفظ نسخة احتياطية من الشهادات الموجودة مسبقًا). الإصلاح في الطريق ...

أيضًا ، إذا استطعت ، يرجى تشغيل ما يلي لمعرفة ما إذا كانت المشكلة متعلقة بالفعل بشهادات SSL الافتراضية:

import requests
print(requests.get('https://api.binance.com/api/v1/exchangeInfo').text)

هل المقتطف أعلاه يعمل؟

لقد نفذت ما اقترحته وهذه هي النتيجة:

{"timezone": "UTC" ، "serverTime": 1513694282583 ، "rateLimits": [{"rateLimitType": "REQUESTS" ، "الفاصل الزمني": "MINUTE" ، "LimitType": 1200} ORDERS "،" الفاصل الزمني ":" SECOND "،" limit ": 10}، {" rateLimitType ":" ORDERS "،" الفاصل الزمني ":" DAY "،" limit ": 100000}]،" exchangeFilters ": [] "الرموز": [{"الرمز": "ETHBTC" ، "الحالة": "TRADING" ، "baseAsset": "ETH" ، "baseAssetPrecision": 8 ، "quoteAsset": "BTC" ، "quotePrecision": 8 ، "أنواع الطلبات":

........

{"filterType": "MIN_NOTIONAL"، "minNotional": "0.01000000"}]} ، {"الرمز": "OSTBNB" ، "الحالة": "TRADING" ، "baseAsset": "OST" ، "baseAssetPrecision": 8 ، "quoteAsset": "BNB" ، "quotePrecision": 8 ، "orderTypes": ["LIMIT" ، "LIMIT_MAKER" ، "MARKET" ، "STOP_LOSS_LIMIT" ، "TAKE_PROFIT_LIMIT"] ، "icebergAllowed": true ، "الفلاتر" : [{"filterType": "PRICE_FILTER"، "minPrice": "0.00001000"، "maxPrice": "10000.00000000"، "tickSize": "0.00001000"}، {"filterType": "LOT_SIZE"، "minQty": " 0.01000000 "،" maxQty ":" 10000000.00000000 "،" stepSize ":" 0.01000000 "}، {" filterType ":" MIN_NOTIONAL "،" minNotional ":" 1.00000000 "}]}]}

يبدو أنه يعمل بشكل صحيح. أنا الشخص الذي أبلغ عن # 904

@ hexdump2002 شكرا! هذا يؤكد فكرتي الأولية. حسنًا ، سيتم إصلاح هذا قريبًا جدًا.

شكرا جزيلا. نحن حقًا في حاجة إليها لأن المكتبة تتعطل في مثل هذا الشيء الأساسي .... بالمناسبة ، عملك مع lib رائع. شكرا لتقاسمها!

@ hexdump2002 شكرا لك! راجع للشغل ، فقط للاكتمال ، إذا لم يكن سراً ، ما هو بلدك / منطقتك / قارتك؟

أوروبا / إسبانيا ، سأقدم كل ما تحتاجه :)

@ kroitor : مع عدم وجود نية وقت متوقع للوصول إلى هذا الخطأ؟ نحن عالقون في هذا الآن :).

@ hexdump2002 اليوم أو غدًا.

kroitor يمكنني أن أؤكد أن لدي نفس الإخراج مثل @ hexdump2002 لرمز الطلبات الذي قدمته

حاولت أيضًا استبدال شهادات ssl الخاصة بي ولم يغير أي شيء

kroitor أيضًا أراد فقط أن يردد صدى الشكر لمشاركة lib! العمل الذي تم إنجازه حتى الآن كان رائعًا!

متابعة اقتراحات "التبديل إلى مكتبة الطلبات" التي علقت عليها أمس. هل سيؤثر هذا على جزء cctx.async من المكتبة؟ أعني ، الطلبات غير متوافقة مع غير متزامن ، لذلك سيكون لدينا مكالمات متزامنة كلما استخدمنا غير متزامن أم لا. هل يمكنك إعطاء القليل من المعلومات حول هذا؟

هههههههههههه

هل سيؤثر هذا على جزء cctx.async من المكتبة؟

لا ، إذا كنت تقصد كسر الإصدار غير المتزامن ، فلن يؤثر ذلك على ملف ccxt.async. ولكن نعم ، إذا كنت تقصد تحويل غير المتزامن إلى تنفيذ غير متزامن للطلبات - فسيؤثر ذلك على التنفيذ فقط. تظل الواجهة كما هي.

أعني ، الطلبات غير متوافقة مع غير متزامن

نعم ، لكننا لن نستخدم الإصدار المتزامن من requests في الحزمة الفرعية async ، بالطبع. سنقوم بدمج تنفيذ غير متزامن للطلبات ، مثل requests-futures ، أو بعض التطبيقات الأخرى التي تناسب هذه الوظيفة بشكل أفضل.

لذلك سيكون لدينا مكالمات متزامنة كلما استخدمنا غير متزامن أم لا.

كلا ، سيظل لديك كل من أوضاع المزامنة والوضع الحقيقي غير المتزامن.

أتمنى أن يجيب على سؤالك ، أخبرني إذا كان لديك المزيد)

نعم ، أنا أفهم ما تعنيه. إذن ، الإصلاح الجديد الذي سيأتي لهذا الخطأ (SSL one) سيصلح كلا الإصدارين؟ مزامنة وغير متزامن؟ أم أنك تقوم بإصلاح الجزء المتزامن فقط أولاً؟

إذن ، الإصلاح الجديد الذي سيأتي لهذا الخطأ (SSL one) سيصلح كلا الإصدارين؟ مزامنة وغير متزامن؟

نعم ، سنصلح كلاهما ، ومع ذلك ، سنقوم بتحميل إصلاح المزامنة أولاً ، ثم الإصلاح غير المتزامن.

أم أنك تقوم بإصلاح الجزء المتزامن فقط أولاً؟

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

تم إصلاح هذه المشكلة في الإصدار 1.10.436. هل يمكنكم اختبارها والتحقق منها من فضلكم؟ سنكون شاكرين لتقاريرك!

حسنًا ، يبدو أنه يعمل الآن. إذا كنت تريد مني إجراء أي اختبار ، فأعلمني بذلك. شكرا جزيلا. سأكون سعيدًا تمامًا عند إصلاح الإصدار غير المتزامن أيضًا: د. عمل جيد!

نتطلع لرؤيته قريبا!

@ kroitor أنا من الإصدار رقم 911
بقدر ما أستطيع أن أقول ، يبدو أن المشكلة قد تم إصلاحها :)
حان الوقت الآن بالنسبة لي للتعرف على التعليمات البرمجية الخاصة بك وإنشاء بعض البرامج النصية الأساسية.

شكرا لك على الدعم السريع والمكتبة الكبيرة

kroitor هل

ملاحظة صغيرة أيضًا ، لست متأكدًا مما إذا كانت مشكلة SSL مرتبطة بكل تبادل ، ولكن عند تشغيل المثال async-gdax-fetch-order-book-continously.py يبدو أنه يعمل مع GDAX ، ولكن ليس عندما أقوم بتغييره إلى binance

تضمين التغريدة

هل ستعلمنا هنا عند إصلاح الإصدار غير المتزامن؟

بالتأكيد ، إنه قادم بعد ذلك.

يبدو أنه يعمل مع GDAX ، لكن ليس عندما أقوم بتغييره إلى binance

سوف ننظر في الأمر ، THX للإبلاغ.

@ kroitor تم اختبار الإصلاح والعمل كما هو متوقع الآن! شكرا لك مرة أخرى!

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