正文


代码示例:

#-*- coding:utf-8 -*-
import requests
url = "https://tst.com"
res = requests.get(url=url, verify=False)
print(res.content)

运行就报错:

urllib3.exceptions.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:992)

出现这个问题,百思不得其解。

后来经过对比,发现用urllib3 == 1.26.5可以请求成功,urllib3 == 2.0.7 报错 sslv3 握手失败。所以最少降级 urllib3 的版本是可以解决的,但是终究不是长久之计。

再后来看到了这篇文章:python3.10调用邮件SMTP报错: ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failu..., 发现问题还是出在ssl协议上,可能我要访问的https的服务ssl协议比较老。。(https://bugs.python.org/issue43998

于是借助神奇的chatgpt以及上面的文章,魔改了一个方法,终于访问没问题了。

#-*- coding:utf-8 -*-
import requests
import urllib3
import ssl # 创建自定义适配器
class TLSAdapter(requests.adapters.HTTPAdapter):
def init_poolmanager(self, *args, **kwargs):
context = ssl.create_default_context()
context.check_hostname = False
context.set_ciphers("DEFAULT")
kwargs['ssl_context'] = context
return super().init_poolmanager(*args, **kwargs) def request_new_tst(url): # 创建会话并使用自定义适配器
session = requests.Session()
session.mount('https://', TLSAdapter())
# 发送请求
response = session.get(url, verify=False)
print(response.content)

附录


python3 zeep webservice client

#-*- coding:utf-8 -*-
from zeep import Client
from zeep.transports import Transport
import requests
import ssl # 创建自定义适配器
class TLSAdapter(requests.adapters.HTTPAdapter):
def init_poolmanager(self, *args, **kwargs):
context = ssl.create_default_context()
context.check_hostname = False
context.set_ciphers("DEFAULT")
kwargs['ssl_context'] = context
return super().init_poolmanager(*args, **kwargs) def zeep_client(url): session = requests.session()
session.mount('https://', TLSAdapter())
session.verify=False transport = Transport(session=session) client = Client(wsdl=url, transport=transport)
print(client) # 调用wsdl中的方法 if __name__ == "__main__":
ip = "192.168.2.121"
url = "https://{0}:123/?wsdl".format(ip)
zeep_client(url=url)

python3 requests 请求https报错: urllib3.exceptions.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:992)的更多相关文章

  1. python3.10调用邮件SMTP报错: ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:997)解决

    一: python3.10调用邮件SMTP报错: ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake fa ...

  2. Uiautomator--出现报错“urllib3.exceptions.ProtocolError:<'Connection aborted.',error<10054,''>>”的解决方式!

    在运行uiautomator时,出现报错"urllib3.exceptions.ProtocolError:<'Connection aborted.',error<10054, ...

  3. python request 请求https报错问题

    旁边大佬让我重新写一个某XX监控脚本 需要请求https遇到了如下的问题  花了一下午解决这个问题... 害太菜,.... 遇到的问题:     requests.post  发送https请求的时候 ...

  4. curl请求https报错

    curl 一般情况下请求http时不会有问题 但是请求 https 协议的链接时会报错,如下: curl: (60) SSL certificate problem: unable to get lo ...

  5. rvm 安装ruby环境报错curl: (35) error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure

    很可能是rvm仓库版本过低,运行以下命令: rvm get head

  6. centos6.5环境wget报错Unable to establish SSL connection

    centos6.5环境wget报错Unable to establish SSL connection [root@centossz008 src]# wget --no-check-certific ...

  7. 升级为iOS9后,默认请求类型为https,如何使用http进行请求会报错(引用他人的)

    升级为iOS9后,默认请求类型为https,如何使用http进行请求会报错 The resource could not be loaded because the App Transport Sec ...

  8. 为什么ajax发GET请求就成功,POST请求则报错?

    为什么ajax发GET请求就成功,POST请求则报错? (1)首先说明的是请求的URL是一个静态资源,比如一个json文件.(2)现在现象是发GET请求就成功,POST请求则报错.(3)最新发现:就算 ...

  9. mac下python环境pip报错[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) 的解决方法

    1.mac下python环境pip报错: issuserdeMacBook-Pro:~ issuser$ pip install pyinstallerCollecting pyinstaller  ...

  10. 禁止requests请求https的提示InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more

     提示这个 InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from ...

随机推荐

  1. 《Modern C++ Design》之上篇

    如下内容是在看侯捷老师翻译的<Modern C++ Design>书籍时,整理的code和摘要,用于不断地温故知新. 第一章 1. 运用 Template Template 参数实作 Po ...

  2. CentOS7部署Docker(联网)

    一.参考地址 https://blog.csdn.net/m0_49762804/article/details/131398587 二.Docker安装 安装依赖环境,yum-utils ## 检查 ...

  3. 用pageOffice控件实现 office 文档在线编辑Word插入另外word文档的功能

    OA办公中,业务需要编辑word文档,需要插入另外word文档的功能. 怎么实现编辑word文档插入另外word文档呢? 2 实现方法 通过pageOffice实现简单的在线打开编辑word时, 通过 ...

  4. 当面试官问出“Unsafe”类时,我就知道这场面试废了,祖坟都能给你问出来!

    一.写在开头 依稀记得多年以前的一场面试中,面试官从Java并发编程问到了锁,从锁问到了原子性,从原子性问到了Atomic类库(对着JUC包进行了刨根问底),从Atomic问到了CAS算法,紧接着又有 ...

  5. SignalR 客户端源生成器 客户端强类型方法

    SignalR 客户端源生成器根据您定义的接口生成强类型的发送和接收代码.您可以在客户端上重用来自强类型 SignalR 集线器的相同接口来代替松散类型的 .On("methodName&q ...

  6. Swift Copy On Write 多线程下面的资源竞争

    Swift中的String.Array.Dictionary等容器类型默认实现了写时复制,这个操作在多线程下面可能会带来错误 https://bugs.swift.org/browse/SR-6543

  7. 7.11考试总结(NOIP模拟11)[math·biology·english]

    吾于冥河沉浮,受尽命运捉弄,纵然汝将忘吾,吾亦伴汝身旁. 前言 考试的时候本来一看 T2 一见如故,决定 231 开题,然后瞅了一眼 T3 的题面,似曾相识. 仔细看了一眼,这,这不是差异吗,然后果断 ...

  8. kettle从入门到精通 第二十三课 kettle carte 错误(java.lang.OutOfMemoryError: GC overhead limit exceeded,Could not emit buffer due to lack of requests,java heap space)分析

    1.Could not emit buffer due to lack of requests(无法发出缓冲区,因为请求不足.) 原因有两点:1)消费者处理数据能力较弱,如表输出步骤.2)消费者没有处 ...

  9. C#.NET WinForm 多个子Task嵌套 Task.WaitAll 阻塞UI线程

    C#.NET WinForm 多个子Task(子线程)嵌套  Task.WaitAll 阻塞UI线程 (界面) 情况: DoIt()方法内,开了2个Task 执行任务,子任务中会更新UI. DoIt( ...

  10. vs code 中开发 .net5 mvc

    asp.net core mvc ------------ 安装vscode-solution-explorer,C# 2个扩展.遇到yes就点yes. 新建一个文件夹:D:\repos\Net5Mv ...