首页 > 编程语言 >python爬虫 requests访问http网站之443报错(ssl验证)

python爬虫 requests访问http网站之443报错(ssl验证)

时间:2023-05-30 12:12:04浏览次数:74  
标签:http ssl 验证 证书 SSL 报错 密钥 服务器 客户端

报错信息:

urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='ssr4.scrape.center', port=443): Max retries exceeded with url: /page/1 (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)')))

SSL介绍:

  • SSL(Secure Sockets Layer)验证是在建立HTTPS连接时进行的一种验证过程。SSL验证的目的是确保服务器的身份,并验证通信双方之间的信任关系。以下是SSL验证的基本过程:

  • 客户端请求建立SSL连接:当客户端(通常是Web浏览器)向服务器发送HTTPS连接请求时,它将尝试与服务器建立SSL连接。

  • 服务器发送数字证书:如果服务器支持SSL,它会将包含数字证书的响应发送给客户端。数字证书由经过可信认证的第三方机构(证书颁发机构)签发,并包含了服务器的公钥、服务器的身份信息以及其他相关信息。

  • 客户端验证数字证书:客户端接收到服务器发送的数字证书后,会对证书进行验证。验证过程包括以下几个方面:

    • a. 校验证书的签发机构:客户端会检查证书是否由被客户端信任的可信证书颁发机构签发。

    • b. 检查证书的有效期:客户端会验证证书是否在有效期内,即确认证书尚未过期。

    • c. 验证服务器域名:客户端会核对证书中的服务器域名与客户端请求的域名是否匹配。这可以防止中间人攻击等安全威胁。

    • d. 检查证书的撤销状态:客户端会查询证书撤销列表(CRL)或在线证书状态协议(OCSP)服务器,确认证书是否被吊销。

  • 客户端生成会话密钥:一旦客户端验证通过,它会生成一个临时的会话密钥(也称为"对称密钥"或"会话密钥"),用于该SSL会话的后续加密和解密操作。

  • 安全数据传输:客户端使用服务器的公钥对会话密钥进行加密,并将加密后的会话密钥发送给服务器。服务器使用自己的私钥解密接收到的会话密钥。之后,客户端和服务器之间的通信将使用该会话密钥进行对称加密和解密。

  • 通过SSL验证过程,客户端可以验证服务器的身份,并确保与服务器之间建立了安全的通信通道。这种验证过程可以帮助防止中间人攻击、欺骗和数据篡改等安全威胁。同时,SSL验证还为用户提供了信任和可靠性,因为证书是由可信的第三方机构签发的,代表了服务器的身份和认证信息。
    使用requests.get(verify=False) 关闭ssl验证。
    urllib3.disable_warnings()禁用 urllib3 库中的 SSL 证书验证警告

标签:http,ssl,验证,证书,SSL,报错,密钥,服务器,客户端
From: https://www.cnblogs.com/ni-a/p/17442888.html

相关文章

  • tomcat+https /mysql+ssl /nginx+https
    本文简要介绍CA和证书的基础知识,并演示openssl-1.0.2d的安装,CA证书生成、用户证书申请、使用CA签发用户证书等内容。实验环境操作系统:Windowsopenssl版本:openssl-1.0.2d(官网获取)1基础知识1.1PKI为解决Internet的安全问题,世界各国对其进行了多年的研究,初步形成了一套完整的......
  • java 网络通讯:tcp,upd,http
    java网络通讯:tcp,upd,http1.TCP通信服务端用的代表类:ServerSocket类,注册端口。调用accept()方法阻塞等待接收客户端连接。得到Socket对象。TCP通信的基本原理?客户端怎么发,服务端就应该怎么收。客户端如果没有消息,服务端会进入阻塞等待。Socket一方关闭或者出现异常、对方......
  • el-cascader 切换数据源时报错
    问题根据属性类型加载el-cascader不同的数据源选项,会报错如下:尝试猜测是:el-cascader上次的绑定值没有清空,而切换属性类型导致数据源选项不同,以致于无法在新的选项中找到绑定值,从而报错。于是,设置了切换属性类型时,把el-cascader的绑定值重置为[]。但仍然存在这个报错。......
  • HTTP&HTTPS协议
    HTTP协议1、什么是HTTP超文本传输协议(HyperTextTransferProtoco,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP(HyperTextTransterProtocol,超文本传输协议),是一个基于请求与响应,无状态的,应用层的协议常基干TCP/P协议传输数据,互联网上应用最为广......
  • yarn安装报错网络问题解决方案
    yarn安装报错网络问题解决方案报错为infoThereappearstobetroublewithyournetworkconnection.Retrying...解决方案:更换安装依赖的镜像,使用淘宝镜像安装安装好后更换淘宝镜像yarnconfigsetregistryhttps://registry.npm.taobao.org移除原代理yarn......
  • netcore-http
    https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/http-requests?view=aspnetcore-6.0 //Addservicestothecontainer.builder.Services.AddHttpClient();publicclassBasicModel:PageModel{privatereadonlyIHttpClientFactory_httpClient......
  • 达梦数据库表空间文件系统层面rm删除后,如果解决数据库日志报错问题
    问题场景:在系统层面rm删除掉了不需要的表空间文件,并非数据库内删除表空间文件,导致数据库报错日志过大。问题还原:新建2个测试用的表空间文件系统层面删除掉表空间文件 重启数据库服务后,数据库日志有相关报错信息停库转换dm.ctl文件为txt格式(生......
  • calico-node 报错calico/node is not ready: BIRD is not ready: BGP not established
    今天不知道怎么回事,一台机器的calico-node报错,也就是无法初始化正常  Events:TypeReasonAgeFromMessage-------------------------NormalScheduled45sdefault-schedulerSuccessfullyassignedk......
  • python使用hTTP方法
    Python中可以使用requests库来发送HTTP请求,其中包括GET、POST、PUT、DELETE等方法。下面是一个使用requests库发送HTTP请求的示例:importrequests#发送GET请求response=requests.get('ExampleDomain')#发送POST请求data={'key1':'value1','key2':'val......
  • pycharm 上启动venv 虚拟环境报错
    报错内容:无法加载文件D:\git_project\demosite\venv\Scripts\activate.ps1,因为在此系统禁止运行脚本 第一步:pycharm 终端输入get-executionpolicy,回车返回Restricted 第二步:管理员运行,输入set-executionpolicyremotesigned,回车输入 Y第三步:回pycharm终端输......