python爬虫(3)——SSL证书与Handler处理器
一、SSL证书问题
上一篇文章,我们创建了一个小爬虫,下载了上海链家房产的几个网页。实际上我们在使用urllib联网的过程中,会遇到证书访问受限的问题。
处理HTTPS请求SSL证书验证,如果SSL证书验证不通过,会警告用户证书不受信任(即没有通过AC认证)。

上图左边我们可以看到SSL验证失败,所以以后遇到这些网站我们需要单独处理SSL证书,让程序主动忽略SSL证书验证错误,即可正常访问。例如我们访问12306。
from urllib import request
#导入python的SSL处理模块
import ssl #忽略SSL验证失败
context=ssl._create_unverified_context() url="https://www.12306.cn/mormhweb/" response=request.urlopen(url,context=context)
html=response.read()
print(html)
二、Handler处理器以及自定义opener
我们之前一直使用的urlopen,它是一个模块帮我们构建好的特殊的opener。但是这个基本的urlopen()是不支持代理、cookie等其他的HTTP/HTTPS高级功能。所以我们需要利用Handler处理器自定义opener,来满足我们需要的这些功能。
import urllib.request url="http://www.whatismyip.com.tw/" #该参数是一个字典类型,键表示代理的类型,值为代理IP和端口号
proxy_support=urllib.request.ProxyHandler({'http':'117.86.199.19:8118'}) #接着创建一个包含代理的opener
opener=urllib.request.build_opener(proxy_support)
opener.addheaders=[("User-Agent","Mozilla/5.0(Macintosh;U;IntelMacOSX10_6_8;en-us)AppleWebKit/534.50(KHTML,likeGecko)Version/5.1Safari/534.50")] #第一种方式是使用install_opener()安装进默认环境,那么以后你使用urlopen()函数,它都是以你定制的opener工作的
urllib.request.install_opener(opener)
response=urllib.request.urlopen(url) #第二种使用一次性的opener.open()打开
#req=urllib.request.Request(url)
#response=opener.open(req) html=response.read().decode('utf-8')
print(html)


我们可以看到,访问网站的IP已经被换成了代理IP。在以上的设置代理的过程中,我们也使用addheaders这一函数,给请求附加了UserAgent,UserAgent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,UserAgent也简称UA。它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。这也是对抗反爬虫的常用手段之一。
python爬虫(3)——SSL证书与Handler处理器的更多相关文章
- python 爬虫 TCL SSL 安全证书问题
其实很复杂 但也很简单 只需要在requests爬虫编写前 加上这句话 requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = 'DH+AES:RS ...
- python爬虫(六)_urllib2:handle处理器和自定义opener
本文将介绍handler处理器和自定义opener,更多内容请参考:python学习指南 opener和handleer 我们之前一直使用的是urllib2.urlopen(url)这种形式来打开网页 ...
- Python request SSL证书问题
错误信息如下: 1 requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_s ...
- python之https爬虫出现 SSL: CERTIFICATE_VERIFY_FAILED (同时打开fiddler就会出现)
1.参考 Py 坑之 CERTIFICATE_VERIFY_FAILED Python 升级到 2.7.9 之后引入了一个新特性,当你urllib.urlopen一个 https 的时候,会验证一次 ...
- 网络请求 爬虫学习笔记 一 requsets 模块的使用 get请求和post请求初识别,代理,session 和ssl证书
前情提要: 为了养家糊口,为了爱与正义,为了世界和平, 从新学习一个爬虫技术,做一个爬虫学习博客记录 学习内容来自各大网站,网课,博客. 如果觉得食用不良,你来打我啊 requsets 个人觉得系统自 ...
- 爬虫之Handler处理器 和 自定义Opener
Handler处理器 和 自定义Opener opener是 urllib2.OpenerDirector 的实例,我们之前一直都在使用的urlopen,它是一个特殊的opener(也就是模块帮我们构 ...
- Python爬虫教程-15-读取cookie(人人网)和SSL(12306官网)
Python爬虫教程-15-爬虫读取cookie(人人网)和SSL(12306官网) 上一篇写道关于存储cookie文件,本篇介绍怎样读取cookie文件 cookie的读取 案例v16ssl文件:h ...
- python爬虫---详解爬虫分类,HTTP和HTTPS的区别,证书加密,反爬机制和反反爬策略,requests模块的使用,常见的问题
python爬虫---详解爬虫分类,HTTP和HTTPS的区别,证书加密,反爬机制和反反爬策略,requests模块的使用,常见的问题 一丶爬虫概述 通过编写程序'模拟浏览器'上网,然后通 ...
- 爬虫urllib2中Handler处理器和自定义Opener
Handler处理器 和 自定义Opener opener是 urllib2.OpenerDirector 的实例,urlopen是一个特殊的opener(也就是模块已经构建好的). 但是基本的url ...
随机推荐
- springboot:快速构建一个springboot项目
前言: springboot作为springcloud的基础,springboot的热度一直很高,所以就有了这个springboot系列,花些时间来了解和学习为自己做技术储备,以备不时之需[手动滑稽] ...
- ThinkPHP5+小程序商城 网盘视频
ThinkPHP5+小程序商城 网盘视频 有需要联系我 QQ:1844912514
- dedecms的include文件夹是干什么的?
include是DEDECMS的系统文件夹,里面放的是DEDECMS系统下的一些系统功能函数文件和功能定义与说明以及参数的文件. include目录文件作用解析 arc.archives.class ...
- mysql alter总结
mysql alter总结(转载) 1:删除列 ALTER TABLE [表名字] DROP [列名称] 2:增加列 ALTER TABLE [表名字] ADD [列名称] INT NOT NULL ...
- VMware虚拟机上建立HTTP服务步骤
1.使用xshell连接虚拟机,也可直接在虚拟机中敲命令. 以下是xshell上的命令: 首先安装HTTPD包 [root@one ~]# mount /dev/sr0 /mnt[root@one ~ ...
- python_如何读写csv数据
案例: 通过股票网站,我们获取了中国股市数据集,它以csv数据格式存储 Data,Open,High,Low,Close,Volume,Adj Close 2016-06-28,8.63,8.47,8 ...
- Activiti简介
Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准,包括支持对象管理组(OMG),面对新技术的机遇,诸如互操作性和云架构,提供技术 ...
- 使用EndNote在Word中插入参考文献的格式设置
endnote其实自带了很多参考文献格式的样式,如下图,但往往跟我们要使用的会有所出入,本文主要介绍的就是设置自定义endnote参考文献格式,以endnote X6和word2003为例,其它版本以 ...
- maven的聚合和继承
Maven的聚合特性能够把项目的各个模块聚合在一起构建: 而Maven的继承特性则能帮组抽取各模块相同的依赖和插件等配置,在简化POM的同时,还能促进各个模块配置的一致性. 聚合:新建一个项目demo ...
- jQuery的Nicescroll滚动条插件使用方法
Nicescroll滚动条插件是一个非常强大的基于jQuery的滚动条插件,不需要增加额外的css,几乎全浏览器兼容.ie6+,实现只需要一段代码,侵入性非常小,样式可完全自定义,支持触摸事件,可在触 ...