通过websocket爬取数据的SSL验证问题

Posted

技术标签:

【中文标题】通过websocket爬取数据的SSL验证问题【英文标题】:SSL verification problem in crawling data through websocket 【发布时间】:2020-05-11 09:56:27 【问题描述】:

我在通过 websocket 抓取数据时遇到问题。当我创建连接时,无论您选择不同版本的 SSL 还是关闭身份验证都不起作用

    ws = websocket.create_connection(
            url='wss://***',
            timeout=60,
            # header=header,
            # subprotocols=["binary", "base64"],
            sslopt=
                "cert_reqs": ssl.CERT_NONE,
                # "check_hostname": False,
                "ssl_version": ssl.PROTOCOL_SSLv2

            
        )

这是我给出的错误:

error message: The remote host forced an existing connection to be closed.  

qhen ssl_version 为ssl.PROTOCOL_SSLv3,错误为:

error message:[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:646).

关于我尝试的设置: 在我的情况下设置cert_reqs=ssl.CERT_NONE 是没用的

【问题讨论】:

【参考方案1】:

不知道使用 websocket 抓取网站是什么意思,但您的密码学已经过时了......

SSL 2.0 在 2011 年被弃用:https://en.wikipedia.org/wiki/Transport_Layer_Security#SSL_1.0,_2.0,_and_3.0

任何现代站点都应配置为拒绝任何弱加密协议,这可能会导致您的错误。

【讨论】:

很抱歉我没有描述清楚。我想通过连接到目标网站的 WSS 来抓取数据。我没有 SSL 证书,想绕过身份验证。因为使用 selenium 太不稳定太麻烦 您可能会收到一些 json 格式的实时数据?这不应该有所不同 SSL 层几乎相同。试试上面... 是的,我会尝试更多。谢谢你的链接,我想我可以学到很多东西

以上是关于通过websocket爬取数据的SSL验证问题的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 TLS/SSL 确保 WebSocket 连接的安全

SSL+socket 详解-概念

WebSocket握手协议

JAVA 码头 9 Websocket SSL

java http可以websocket不行

有没有办法从 NativeScript 应用程序通过 SSL 与 WebSocket 通信?