如何使用Python websockets库通过IP地址连接WebSocket服务器?
解决用IP地址连接WSS服务器的问题
直接用IP连接WSS失败的核心原因是TLS证书验证不通过:服务器的SSL证书是绑定原域名(比如api.server.com)的,当你用IP发起请求时,TLS握手阶段会检查请求的主机名(这里是IP地址)和证书中记录的域名是否一致,不匹配就会拒绝连接。
有两种解决方式:
1. 正确方案:指定SNI(推荐生产环境使用)
通过sslopt参数设置server_hostname为原域名,让服务器返回对应域名的证书,就能通过验证:
import websocket import ssl def on_message(wsapp, message): print(message) # 替换成实际的IP和原域名 ws = websocket.WebSocketApp("wss://1.2.3.4:443/ws/stream", on_message=on_message) ws.run_forever(sslopt={"server_hostname": "api.server.com"})
2. 临时方案:绕过证书验证(仅测试用,不安全)
如果只是临时测试,可以关闭证书验证,但这会让连接失去TLS的安全保护:
import websocket import ssl def on_message(wsapp, message): print(message) ws = websocket.WebSocketApp("wss://1.2.3.4:443/ws/stream", on_message=on_message) ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE})
内容的提问来源于stack exchange,提问作者rare77
相关产品推荐
相关产品推荐

