1 https和SSL之间是什么关系

https和SSL之间是什么关系:https就是在http上面加了一层ssl协议,在http站点上部署SSL数字证书就变成了https。

现在随处可见 https 开头的网站,requests可以为HTTPS请求验证SSL证书,就像web浏览器一样,如果网站的SSL证书是经过CA认证的,则能够正常访问,如:https://www.baidu.com/等。

如果SSL证书验证不通过,或者操作系统不信任服务器的安全证书,比如浏览器在访问12306网站如:https://www.12306.cn/mormhweb/的时候,会警告用户证书不受信任。(12306 网站证书是自己做的,没有通过CA认证)

扩展阅读:

电子商务认证授权机构(CA, Certificate Authority),也称为电子商务认证中心,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。例如北京的数字认证中心:http://www.bjca.org.cn/

下图火狐浏览器

下图谷歌浏览器

2 关于CA认证(数字证书认证中心)

CA(Certificate Authority)是数字证书认证中心的简称,是指发放、管理、废除数字证书的受信任的第三方机构,如

北京数字认证股份有限公司:http://www.bjca.org.cn/

上海市数字证书认证中心有限公司:http://www.sheca.com/

等...

CA的作用是检查证书持有者身份的合法性,并签发证书,以防证书被伪造或篡改,以及对证书和密钥进行管理。

现实生活中可以用身份证来证明身份, 那么在网络世界里,数字证书就是身份证。和现实生活不同的是,并不是每个上网的用户都有数字证书的,往往只有当一个人需要证明自己的身份的时候才需要用到数字证书。

普通用户一般是不需要,因为网站并不关心是谁访问了网站,现在的网站只关心流量。但是反过来,网站就需要证明自己的身份了。

比如说现在钓鱼网站很多的,比如你想访问的是www.baidu.com,但其实你访问的是www.daibu.com”,所以在提交自己的隐私信息之前需要验证一下网站的身份,要求网站出示数字证书。

一般正常的网站都会主动出示自己的数字证书,来确保客户端和网站服务器之间的通信数据是加密安全的。

3 案例

3.1 访问SSL证书正常网站import requests

# response = requests.get("https://www.baidu.com/", verify=True)

# 也可以省略不写#

response = requests.get("https://www.baidu.com/")

print(response.content.decode("utf-8"))

3.2 代码访问带有非SSL认证的网站

来测试一下:

SSLError: ("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)",)

如果SSL证书验证不通过,或者不信任服务器的安全证书,则会报出SSLError,据说12306证书是自己做的:

3.3跳过 12306 的证书验证

Requests也可以为HTTPS请求验证SSL证书,要想检查某个主机的SSL证书,你可以使用verify参数,把verify设置为False就可以正常请求了。忽略验证证书。

importrequestsresponse = requests.get("https://www.12306.cn/mormhweb/",verify =False)print(response.content.decode("utf-8"))

运行效果:

本博客源码Github地址:

请随手给个star,谢谢!

python怎么爬虫https的内容_爬虫15 python 如何处理HTTPS请求访问 SSL证书验证相关推荐

  1. python爬虫工程师工作内容_爬虫岗位职责

    岗位职责: *针对复杂的网站架构主动获取相关数据信息: *负责数据获取.清洗和分析工作. 任职要求: *计算机科学.应用数学.统计学.物理学.天文学.商业分析.信息系统.数据科学或相关专业本科或以上学 ...

  2. python移动文件中某个内容_如何在Python中移动文件

    如何在Python中移动文件 我查看了Python $ mv ...接口,但无法找到移动文件的方法. 我如何在Python中执行相当于$ mv ...的操作? >>> source_ ...

  3. python爬取付费隐藏内容_如何用python 爬取网页中隐藏的div内容?

    图片所在的html元素id叫 viewimg ,这个元素是由 view.js 当中的 loadview 函数创建的.该函数吧serverurl跟photosrc这个array里头的元素拼接,并把他设置 ...

  4. python中yaml模块的使用_详解Python yaml模块

    一.yaml文件介绍 yaml是一个专门用来写配置文件的语言. 1. yaml文件规则 区分大小写: 使用缩进表示层级关系: 使用空格键缩进,而非Tab键缩进 缩进的空格数目不固定,只需要相同层级的元 ...

  5. python怎样打开加密的文件_如何用Python 加密文件

    生活中,有时候我们需要对一些重要的文件进行加密,Python 提供了诸如 hashlib,base64 等便于使用的加密库. 但对于日常学习而言,我们可以借助异或操作,实现一个简单的文件加密程序,从而 ...

  6. python跳过ssl验证_Python SSL证书验证问题解决方案

    这篇文章主要介绍了Python SSL证书验证问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.SSL问题 1.在你不启用fiddle ...

  7. python 指定证书验证_Python SSL证书验证问题解决方案

    Python SSL证书验证问题解决方案 这篇文章主要介绍了Python SSL证书验证问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 ...

  8. 阿里云服务器域名http升级为https访问,SSL证书下载安装全流程

    阿里云服务器域名http升级为https访问,SSL证书下载安装全流程 目录 阿里云服务器域名http升级为https访问,SSL证书下载安装全流程 1.背景 2.阿里云下载安装SSL证书流程 2.1 ...

  9. Python3处理HTTPS请求 SSL证书验证

    Python3处理HTTPS请求 SSL证书验证 金融类的公司网站一般都是https 开头的网站,urllib.request可以为 HTTPS 请求验证SSL证书,就像web浏览器一样,如果网站的S ...

最新文章

  1. MyEclipse搭建java Web项目开发环境
  2. 网页计算器源php代码,计算器网页版源代码
  3. npm的一些常用命令(在国内,建议使用cnpm,在淘宝镜像里面下载就行)
  4. OpenYurt 深度解读:如何构建 Kubernetes 原生云边高效协同网络?
  5. SQL SERVER 子查询的用法
  6. 山东青岛职称计算机报名时间2015,青岛市2015年第二次职称计算机考试时间
  7. SCOM数据库整理索引计划出错
  8. 一张纸厚度是多少毫米_一张纸的威力有多大?纸折103次捅破宇宙,理论荒诞却无法反驳...
  9. .net数据库连接池配置技巧(默认值)
  10. unity mysql增删改查,XML的使用,增删改查(Unity中的)
  11. PowerDesigner 常用配置修改
  12. Java语言程序设计(沈泽刚主编)第3版 第1~3章编程练习答案
  13. linux外设驱动实现专栏:各虚拟外设驱动代码实现集合
  14. ps人物换脸移花接木
  15. thinkphp mysql order_ThinkPHP中order()使用方法详解
  16. 直播源代码中关于手机直播平台开发的登陆注册介绍
  17. PMSM学习笔记1——永磁同步电机的工作原理与数学模型
  18. int[]是什么类型?
  19. stream 计算一个List对象中某个字段总和
  20. 多任务学习MTL-MMOE

热门文章

  1. async spring 默认线程池_Spring定时任务高级使用篇
  2. Characterizing stochastic time series with ordinal networks
  3. 深掘工业互联网大数据五大维度
  4. php项目打不开DNS,电脑无法打开网页显示错误代码dns_probe_possible怎么解决?
  5. android 自定义 build.gradle,Gradle for Android 第二篇( Build.gradle入门 )
  6. python 加干扰线 图片生成_用Python一键生成炫酷九宫格图片,火了朋友圈
  7. 标准模块 threading
  8. GO语言学习之路14
  9. IntelliJ IDEA 2018.2支持Java 11、MacBook Touch Bar等新特性
  10. linux令普通用户拥有root权限