**
一、什么是SSL证书?如何检查网站是否部署了SSL证书?
**
如果你能使用 https:// 来访问某个网站,就表示此网站是部署了 SSL 证书。一般来讲,
如果此网站部署了 SSL 证书,则在需要加密的页面会自动从 http:// 变为 https:// ,如果没
有变,你认为此页面应该加密,你也可以尝试直接手动在浏览器地址栏的 http 后面加上一
个英文字母“ s ”后回车,如果能正常访问并出现安全锁,则表明此网站实际上是部署了 SSL
证书,只是此页面没有做 https:// 链接;如果不能访问,则表明此网站没有部署 SSL 证书。
请注意:有些部署了 SSL 证书的网站会有不安全因素警告 ( 如下图所示 ) ,表明此
页面中含有指向其他没有部署 SSL 证书的页面,为了安全起见,建议您选择“否”,浏览器
就不显示不安全的内容,这些内容一般都是 Flash 动画或 Java Script ,如果选择“是”,则
浏览器不会显示安全锁标志。
什么是 SSL 证书? SSL 证书就是遵守 SSL 安全套接层协议的服务器数字证书。而
SSL 安全协议最初是由美国网景 Netscape Communication 公司设计开发的,全称为:安全
套接层协议 (Secure Sockets Layer) , 它指定了在应用程序协议 ( 如 HTTP 、 Telnet 、
FTP) 和 TCP/IP 之间提供数据安全性分层的机制,它是在传输通信协议 (TCP/IP) 上实现
的一种安全协议,采用公开密钥技术,它为 TCP/IP 连接提供数据加密、服务器认证、消息
完整性以及可选的客户机认证。由于此协议很好地解决了互联网明文传输的不安全问题,很
快得到了业界的支持,并已经成为国际标准。
SSL 证书由浏览器中“受信任的根证书颁发机构”在验证服务器身份后颁发,具有网站
身份验证和加密传输双重功能。
请注意:如果 SSL 证书不是由浏览器中“受信任的根证书颁发机构”颁发的,则浏览器
会有安全警告,如图 2 所示为 IE7 浏览器的警告信息为“此网站出具的安全证书不是受信
任的证书颁发机构颁发的,安全证书问题可能显示试图欺骗您或截获您向服务器发送的数
据,建议关闭此网页,并且不要继续浏览该网站。
**
二、处理 HTTPS 请求 SSL 证书验证
**
现在随处可见 https 开头的网站,urllib2 可以为 HTTPS 请求验证 SSL 证书,就像 web
浏 览 器 一 样 , 如 果 网 站 的 SSL 证 书 是 经 过 CA 认 证 的 , 则 能 够 正 常 访 问 , 如 :
https://www.baidu.com/等… 如果 SSL 证书验证不通过,或者操作系统不信任服务器的安全证书。
出现这种情况时,就会影响我们爬取网站数据,怎么办呢,这时候就就要单独处理SSL证书,让程序忽略
SSL证书验证错误,即可正常访问。
编写程序:
(1)如果你用的是urllib库,你该这么写,网址就根据你自己的需求了
from urllib import request
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
response = request.urlopen("https://www.10086.com")
print(response.read().decode("utf-8"))
(2)如果你用的是requests模块,那么就简单多了,你只需在请求时加个参数即可
verify=False
response= requests.get(url=url,headers=henaders,encoding="utf-8",verify=False)