Python Websocket安全[SSL:CERTIFICATE\u VERIFY\u FAILED](\u SSL.c:777)

Python Websocket安全[SSL:CERTIFICATE\u VERIFY\u FAILED](\u SSL.c:777),python,python-3.x,ssl,websocket,ssl-certificate,Python,Python 3.x,Ssl,Websocket,Ssl Certificate,我正在制作一个需要从WebSocket安全服务器接收实时消息的程序 我试着用JavaScript完成这项任务,效果非常好 但是JavaScript不能满足我的项目的需要。所以我尝试用Python做同样的事情。但是没有成功 我正在努力纠正的错误是: [SSL:CERTIFICATE\u VERIFY\u FAILED]证书验证失败(\u SSL.c:777) 我假设JavaScript没有这个问题,因为它使用浏览器来验证连接 我使用的是: Python 3.6.4 巨蟒3 视窗10 我真的不知

我正在制作一个需要从WebSocket安全服务器接收实时消息的程序

我试着用JavaScript完成这项任务,效果非常好
但是JavaScript不能满足我的项目的需要。所以我尝试用Python做同样的事情。但是没有成功

我正在努力纠正的错误是:

[SSL:CERTIFICATE\u VERIFY\u FAILED]证书验证失败(\u SSL.c:777)

我假设JavaScript没有这个问题,因为它使用浏览器来验证连接

我使用的是:

  • Python 3.6.4
  • 巨蟒3
  • 视窗10
我真的不知道该怎么办。我已经找了很多了。
我可以通过更改代码来解决此问题吗?
我应该使用另一个库来建立连接吗?
这是Python还是Anaconda的问题?
是不是我搞不懂的新手错误

以下是我的Python代码:

import websocket
import websocket
import threading
import time

def on_message(ws, message):
    print(message)

def on_error(ws, error):
    print(error)

def on_close(ws):
    print("### closed ###")

def on_open(ws):
    def run(*args):
        for i in range(3):
            time.sleep(1)
            data = ws.recv()
            print(data)
        time.sleep(1)
        ws.close()
        print("thread terminating...")
    thread.start_new_thread(run, ())



websocket.enableTrace(True)
ws = websocket.WebSocketApp("wss://stream.binance.com:9443/ws/bnbbtc@ticker",
                            on_message = on_message,
                            on_error = on_error,
                            on_close = on_close)
ws.on_open = on_open

ws.run_forever()
如果有人感兴趣,以下是我的JavaScript代码:

var socket=新的WebSocket('wss://hostname:port/dir/dir@股票代码“);
socket.onopen=函数(事件)
{
console.log('connected');
}
socket.onmessage=函数(e){
var server_message=e.data;
console.log(服务器消息);
}

这是Anaconda中的错误,请尝试删除certifi:
conda删除certifi

如果不起作用,您可以从本期获得更多信息:

或者,您可以在python脚本中禁用ssl验证:

import ssl
ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE})

这是Anaconda中的错误,请尝试删除certifi:
conda remove certifi

如果不起作用,您可以从本期获得更多信息:

或者,您可以在python脚本中禁用ssl验证:

import ssl
ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE})

成功了!非常感谢。我仍然需要使用SSL做同样的事情。但这已经是一个巨大的进步。至少现在我知道错误在哪里了。谢谢!:)嗨@WerexZenok你能想出一个办法吗?我现在陷入了同样的问题,我需要与实际使用SSL相同的东西,但在anaconda中没有,只有pythonHi@MayurJadhav。对不起,之前没有回答。我中断了我的项目好几年了。我不记得我到底做了什么,但我想我没有解决问题。我现在正试图为我的其他项目做类似的事情。我解决了SSL部分,如果您感兴趣并且仍然卡住了,我可以发表一篇新的帖子来解释我是如何做到的。您好@WerexZenok谢谢您的回复,我也找到了解决SSL问题的方法,我正在使用这个客户机:设置这个环境变量帮助了我:WEBSOCKET\u client\u CA\u BUNDLEWorked像个符咒,谢谢!成功了!非常感谢。我仍然需要使用SSL做同样的事情。但这已经是一个巨大的进步。至少现在我知道错误在哪里了。谢谢!:)嗨@WerexZenok你能想出一个办法吗?我现在陷入了同样的问题,我需要与实际使用SSL相同的东西,但在anaconda中没有,只有pythonHi@MayurJadhav。对不起,之前没有回答。我中断了我的项目好几年了。我不记得我到底做了什么,但我想我没有解决问题。我现在正试图为我的其他项目做类似的事情。我解决了SSL部分,如果您感兴趣并且仍然卡住了,我可以发表一篇新的帖子来解释我是如何做到的。您好@WerexZenok谢谢您的回复,我也找到了解决SSL问题的方法,我正在使用这个客户机:设置这个环境变量帮助了我:WEBSOCKET\u client\u CA\u BUNDLEWorked像个符咒,谢谢!