Mar*_*rko 5 python ssl certificate verify websocket
我正在尝试从 Bitstamp Websocket v2.0 API 获取实时比特币价格数据。如果需要的话去哪里获取证书?如果证书下载是自动的,我如何确保python可以验证收到的证书?
Bitstamp 网站上关于此事的文档相当缺乏。以下是 Bitstamp api 文档中的引用:
“一旦通过 websocket 握手(使用 HTTP 升级标头)打开连接,您就可以订阅所需的频道。”
Bitstamp API 文档:https://www.bitstamp.net/websocket/v2/
尝试在 websockets 文档中搜索:https://websockets.readthedocs.io/en/stable/
我研究过 websockets 和 ssl。现在我对握手有了一些了解,但经过多次尝试和搜索后我仍然不知道该怎么做。
import asyncio
import websockets
async def bitstamp_ticker():
async with websockets.connect(
'wss://ws.bitstamp.net', ssl=True) as websocket:
pass
asyncio.get_event_loop().run_until_complete(bitstamp_ticker())
Run Code Online (Sandbox Code Playgroud)
根据我在 websocket 文档中的理解,添加 ssl=True 应该足以建立安全连接。但似乎 Python 3.6 中内置的证书颁发机构无法识别位戳证书。这就是错误发生的原因?
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)
Run Code Online (Sandbox Code Playgroud)
小智 5
我没有花时间研究 Bitstamp 的 ssl 证书问题。但我只是禁用了 ssl 证书验证以使网络套接字市场数据推送工作。以下是示例代码,如果您能分享您在这个问题上的未来进展,我们将不胜感激。
# -*- coding: utf-8 -*-
import websocket
import json
import ssl
bitstamp_endpoint = 'wss://ws.bitstamp.net'
def subscribe_marketdata(ws):
params = {
'event': 'bts:subscribe',
'data': {
'channel': 'order_book_btcusd'
}
}
market_depth_subscription = json.dumps(params)
ws.send(market_depth_subscription)
def on_open(ws):
print('web-socket connected.')
subscribe_marketdata(ws)
def on_message(ws, data):
data = json.loads(data)
print(data)
def on_error(ws, msg):
print(msg)
if __name__ == '__main__':
marketdata_ws = websocket.WebSocketApp(bitstamp_endpoint, on_open=on_open, on_message=on_message, on_error=on_error)
marketdata_ws.run_forever(sslopt={'cert_reqs': ssl.CERT_NONE})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2834 次 |
| 最近记录: |