首页 > 编程语言 >解决Python报错SSLError,如果试了网上一大堆方法还不行,看看这个吧!!

解决Python报错SSLError,如果试了网上一大堆方法还不行,看看这个吧!!

时间:2024-02-01 18:22:20浏览次数:29  
标签:tls Python cffi url 报错 SSLError requests

前言

这个问题困扰了群友一天,我怀着好奇心去试试看,不到5分钟给解决了哈哈。

报错代码

报错代码中对相关的host和url进行了替换,大家在网上发布内容也要注意隐私哈,多长个心眼子总没错。

requests.exceptions.SSLError: HTTPSConnectionPool(host='xxx.com', port=443): Max retries exceeded with url: xxxxxxx?xxxxx=xxx&xxxx=xxxxx (Caused by SSLError(SSLError(1, '[SSL: BAD_ECPOINT] bad ecpoint (_ssl.c:1129)')))

你可能会这么解决

看报错是SSLError,第一想法就会想到是和https相关,然后就去度娘搜,你大概率会得到类似于下面的一系列操作。

  • 使用verify=False,忽略ssl验证。
  • requestsurllib库进行降级安装。
  • 重新安装openssl
  • 安装pyopenssl等一系列的第三方库。
    当你进行了以上一系列猛如虎的操作后,你会发现你的代码依旧是一片红

我的解决方式

正题来了,我在使用了浏览器和apipost对该网址进行了重发测试后,发现请求是正常的。然而我的开发环境对于其他https协议的url是可以正常请求获取数据的,再不行加个verify=False也可以了。

在确定了代码和环境都没有任何问题后,第一时间想到的就是会不会遇到了反爬?如果是反爬,大概率就是类似tls指纹这种认证了(对哦,我声明一下,本人是学习阶段,还是小菜鸡,如果有什么地方描述有误或者理解有误,欢迎各位大佬指正,我会认真学习并且接受好的建议,谢谢各位大佬!!)

我之前在各大论坛冲浪的时候,有接触到tls这种反爬技术,随后我就搜索关于tls指纹相关的文档,发现可以手写加密算法来替换指纹或者直接调库侠使用别人写好的第三方库,现在,给大家推荐一个第三方库curl_cffi,使用命令pip install curl_cffi即可。

curl_cffi使用方式

from curl_cffi import requests # 使用该requests代替原本的requests使用即可
# response = requests.get/post(url, headers=headers)
# 如果在使用response调用text或者json()没有相关提示时可以这样改写,这样就有提示了
from requests import Response
response: Response = requests.get/post(url, headers=headers)

结论

由此可见,掌握丰富的知识积累是非常有必要的,如果你从来没有听说过tls指纹认证技术,或者我的文章不曾有幸被你看到,你的问题会在多长时间可以得到解决呢?

第一次发文章,有很多不足之处,请大佬们多多见谅,希望可以帮到在网上冲浪求解的你们。

标签:tls,Python,cffi,url,报错,SSLError,requests
From: https://www.cnblogs.com/kikn0928/p/18001838

相关文章

  • 很好用的python游戏环境:强化学习算法走迷宫游戏环境(导航问题 navigation):分享一个pyth
    项目的GitHub地址(作者:莫凡):https://github.com/MorvanZhou/mmaze运行的示例代码:importmmazestart=(0,0)end=(10,10)m=mmaze.generate(width=11,height=11,symmetry="horizontal")solutions=m.solve(start=start,end=end)m.plot(solution=solutions[0],......
  • 执行./ch-mount.sh -m rootfs/时报错: /bin/bash^M 解释器错误: 没有那个文件或目录
    执行./ch-mount.sh-mrootfs/时报错:/bin/bash^M解释器错误:没有那个文件或目录原因是./ch-mount.sh这个文件在Windows下编辑过,在Windows下每一行结尾是\n\r,而Linux下则是\n,所以才会有多出来的\r。 解决办法:先执行下面的命令sed-i's/\r$//' ch-mount.sh该指令会把......
  • python爬取教习网试卷下载
    #!/usr/local/bin/python3#-*-encoding:utf-8-*-importrequestsfromlxmlimportetreeimportosfromPILimportImageimportshutildefget_doc_url(url):headers={"User-Agent":"Mozilla/5.0(Macintosh;IntelMacOS......
  • python word 删除表格的指定列
    fromdocximportDocumentfromdocx.sharedimportCmdefdelete_columns(path,table_n,column_n):"""删除一列:parampath:路径:paramtable_n:第几个表格:paramcolumn_n:第几列:return:"""doc=Document(path)......
  • Python中的基础数据类型:List、Tuple和Dict及其常用用法简析
    在Python编程语言中,基础数据类型是构建程序的基本元素。这些基础数据类型包括List(列表)、Tuple(元组)和Dict(字典)。每种数据类型都有其特定的用途和特性,了解并掌握它们对于编写高效、可维护的Python代码至关重要。本文将深入探讨这三种基础数据类型,并通过代码示例展示它们的常用用法。......
  • Python3 操作ES7
    Python3操作ES7 Python3操作ES71、连接ES7,创建索引fromelasticsearchimportElasticsearches=Elasticsearch(['127.0.0.1:9200'])index_name='student'request_body={"mappings":{"properties":{......
  • python连接mysql8、sqlserver2012
    python连接mysql比较顺利,网上很多代码,连接sqlserver的例子少,且很多错误,尝试很多帖子,最后成功代码如下。#连接mysqlimportpymysqldefconn():try:connection=pymysql.connect(host='localhost',port=3306,user='root',password='123456',database='cl&#......
  • Hive连接报错:root is not allowed to impersonate root (state=08S01,code=0)
    问题描述使用hive/bin目录下的hive启动客户端,使用!connectjdbc:hive2://hadoop01:10000连接Hive数据仓库时提示输入用户名和密码,输入数据库的用户名和密码报错:Error:CouldnotopenclienttransportwithJDBCUri:jdbc:hive2://hadoop01:10000:Failedtoopennewsession......
  • 【解决方案】Word启动报错:“文件未找到:xxx...Adobe...MacPDFM.framework...”
    ✨报错提示运行时错误“53”:文件末找到:/Library/ApplicationSupport/Adobe/MACPDFM/MacPDFM.framework/Versions/A/MacPDFM✨解决方案实际上是由于AdobeAcrobatProDC卸载残留导致该问题解决方案如下cd~/Library/Group\Containers/UBF8T346G9.Office/User\Con......
  • oracle 报错ORA-12514: TNS:listener does not currently know of service requested
    oracle报错ORA-12514:TNS:listenerdoesnotcurrentlyknowofservicerequestedinconnec 在使用navicat上连接oracle正确用户名和密码,oracle常用服务也启动的情况下依然无法建立连接。但是sqlPus上输入用户名和密码可以连接通过,百思不得其解(菜鸟本质好奇)。这种......