أحاول الاتصال بـ 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
هل انت مقيم في الصين
أنا موجود في أستراليا
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 بشكل طبيعي ...
كما ترى ، يعمل تثبيت جديد لـ Anaconda3 من جانبي ... لذلك ، ربما لديك بعض الشهادات القديمة أو شيء من هذا القبيل ... ومع ذلك ، لا أعرف ما إذا كان ذلك منطقيًا ، لأنك قمت بإعادة تثبيت نظيفة. ..
بعد تثبيت أناكوندا ، وجدت هاتين الشهادتين في الإعداد الخاص بي C:\Users\myusername\AppData\local\Continuum\anaconda3\ssl
:
يمكنك محاولة نسخها إلى مجلد 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 تم اختبار الإصلاح والعمل كما هو متوقع الآن! شكرا لك مرة أخرى!
التعليق الأكثر فائدة
تم إصلاح هذه المشكلة في الإصدار 1.10.436. هل يمكنكم اختبارها والتحقق منها من فضلكم؟ سنكون شاكرين لتقاريرك!