【Python】报错:{SSLError}HTTPSConnectionPool,SSLError(SSLError(1, ‘[SSL: BAD_ECPOINT] bad ecpoint (_ssl.

@[TOC](【Python】 报错:{SSLError}HTTPSConnectionPool(host=‘www.xxx.cn’, port=443): Max retries exceeded with url: /ss/xx/ (Caused by SSLError(SSLError(1, ‘[SSL: BAD_ECPOINT] bad ecpoint (_ssl.c:1000)’))))

python 报错内容:

{SSLError}HTTPSConnectionPool(host=‘www.xxx.cn’, port=443): Max retries exceeded with url: /ss/xx/ (Caused by SSLError(SSLError(1, ‘[SSL: BAD_ECPOINT] bad ecpoint (_ssl.c:1000)’)))

python 代码:

requests.get(url, headers=headers)

python requests或者urllib3却获取不到网站内容信息
但通过Postman或者浏览器可以打开www.xxxx.cn访问网站,

解决方案一:忽略 SSL 证书验证


requests.get(url, headers=headers, verify=False)

报错:
在这里插入图片描述

解决方案二:使用其他 HTTP 客户端库

import urllib3

http = urllib3.PoolManager()
response = http.request('GET', url, headers=headers)
content = response.data

在这里插入图片描述
还是报错,又查了些资料,应该是"TLS指纹",尝试使用curl-cffi 库,它提供了对libcurl的绑定,允许你使用Python来执行HTTP客户端操作,类似于在命令行中使用curl工具。curl-cffi利用了CFFI(C Foreign Function Interface for Python)来提供这些功能。

先通过pip来安装curl-cffi:

pip install curl-cffi

导入库

url = 'https://www.xxx.ss.cn/xx/ee/'

from curl_cffi import requests as curl_requests
# 设置一个用户代理,模仿浏览器的行为。
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
response = curl_requests.get(url, headers=headers, impersonate="chrome110")

print(response.status_code)

在这里插入图片描述

成功绕过TLS指纹认证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值