You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python与Qt环境中禁用SSL证书验证?

用PyQt实现忽略SSL证书验证的HTTPS请求

要实现类似curl --insecure的效果,即跳过SSL证书验证,你可以通过两种方式修改PyQt的网络请求配置:

方法一:直接设置请求的SSL配置

修改请求对象的SSL配置,将证书验证模式设为VerifyNone,强制跳过证书校验:

def init_request(self):  
    req = QtNetwork.QNetworkRequest(QtCore.QUrl('https://some-site.com'))    
    # 获取默认SSL配置并修改验证模式
    ssl_config = QtNetwork.QSslConfiguration.defaultConfiguration()
    ssl_config.setPeerVerifyMode(QtNetwork.QSslSocket.VerifyNone)
    req.setSslConfiguration(ssl_config)
    
    self.nam = QtNetwork.QNetworkAccessManager()
    self.nam.finished.connect(self.handle_response)        
    self.nam.get(req)
    
def handle_response(self, reply): 
    if reply.error() != QtNetwork.QNetworkReply.NoError:
        print(reply.errorString())
        return

方法二:通过sslErrors信号忽略错误

连接QNetworkAccessManager的sslErrors信号,在回调函数中主动忽略所有SSL错误:

def init_request(self):  
    req = QtNetwork.QNetworkRequest(QtCore.QUrl('https://some-site.com'))    
    self.nam = QtNetwork.QNetworkAccessManager()
    # 绑定SSL错误处理信号
    self.nam.sslErrors.connect(self.handle_ssl_errors)
    self.nam.finished.connect(self.handle_response)        
    self.nam.get(req)
    
def handle_ssl_errors(self, reply, errors):
    # 忽略所有SSL证书相关错误
    reply.ignoreSslErrors()
    
def handle_response(self, reply): 
    if reply.error() != QtNetwork.QNetworkReply.NoError:
        print(reply.errorString())
        return

注意事项

这两种方式都会完全跳过SSL证书验证,和curl --insecure一样存在安全风险,仅建议在测试环境或完全信任的服务器场景下使用,避免被中间人攻击窃取数据。

内容的提问来源于stack exchange,提问作者MapUser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 09:25:08