一、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处理器的更多相关文章

  1. python 爬虫 TCL SSL 安全证书问题

    其实很复杂 但也很简单 只需要在requests爬虫编写前 加上这句话 requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = 'DH+AES:RS ...

  2. python爬虫(六)_urllib2:handle处理器和自定义opener

    本文将介绍handler处理器和自定义opener,更多内容请参考:python学习指南 opener和handleer 我们之前一直使用的是urllib2.urlopen(url)这种形式来打开网页 ...

  3. Python request SSL证书问题

    错误信息如下: 1 requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_s ...

  4. python之https爬虫出现 SSL: CERTIFICATE_VERIFY_FAILED (同时打开fiddler就会出现)

    1.参考 Py 坑之 CERTIFICATE_VERIFY_FAILED Python 升级到 2.7.9 之后引入了一个新特性,当你urllib.urlopen一个 https 的时候,会验证一次 ...

  5. 网络请求 爬虫学习笔记 一 requsets 模块的使用 get请求和post请求初识别,代理,session 和ssl证书

    前情提要: 为了养家糊口,为了爱与正义,为了世界和平, 从新学习一个爬虫技术,做一个爬虫学习博客记录 学习内容来自各大网站,网课,博客. 如果觉得食用不良,你来打我啊 requsets 个人觉得系统自 ...

  6. 爬虫之Handler处理器 和 自定义Opener

    Handler处理器 和 自定义Opener opener是 urllib2.OpenerDirector 的实例,我们之前一直都在使用的urlopen,它是一个特殊的opener(也就是模块帮我们构 ...

  7. Python爬虫教程-15-读取cookie(人人网)和SSL(12306官网)

    Python爬虫教程-15-爬虫读取cookie(人人网)和SSL(12306官网) 上一篇写道关于存储cookie文件,本篇介绍怎样读取cookie文件 cookie的读取 案例v16ssl文件:h ...

  8. python爬虫---详解爬虫分类,HTTP和HTTPS的区别,证书加密,反爬机制和反反爬策略,requests模块的使用,常见的问题

    python爬虫---详解爬虫分类,HTTP和HTTPS的区别,证书加密,反爬机制和反反爬策略,requests模块的使用,常见的问题 一丶爬虫概述       通过编写程序'模拟浏览器'上网,然后通 ...

  9. 爬虫urllib2中Handler处理器和自定义Opener

    Handler处理器 和 自定义Opener opener是 urllib2.OpenerDirector 的实例,urlopen是一个特殊的opener(也就是模块已经构建好的). 但是基本的url ...

随机推荐

  1. [国嵌笔记][030][U-Boot工作流程分析]

    uboot工作流程分析 程序入口 1.打开顶层目录的Makefile,找到目标smdk2440_config的命令中的第三项(smdk2440) 2.进入目录board/samsung/smdk244 ...

  2. POJ 3829 Seat taking up is tough(——只是题目很长的模拟)

    题目链接: http://poj.org/problem?id=3829 题意描述: 输入矩阵的大小n和m,以及来占位置的人数k 输入n*m的教室座位矩阵,每个值表示该座位的满意度 输入每个人来占位置 ...

  3. css样式小记

    溢出文字展现为... .over-hidd { white-space: nowrap; text-overflow: ellipsis; overflow: hidden; }

  4. Logback日志配置的简单使用

    Logback介绍 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和logback-access ...

  5. 短时间内多个请求状态更新,导致react 不能及时响应问题总结

    个人总结 这段时间项目中遇到这样一个问题,旧项目中增加了一个聊天对话的模块,这是其他同学负责的部分,因为要有消息提醒,所以做了个轮询.消息提示因为是页头部分,所以每个模块都会引用到.这是背景. 现象 ...

  6. sql 中文转拼音首字母

    http://blog.csdn.net/zhanglong_longlong/article/details/46772571 --可支持大字符集20000个汉字! create function ...

  7. 什么是Linux主机?

    Linux主机是基于Linux内核的服务器操作系统配置的主机(常见Linux服务器操作系统如:Redhat,CentOS,Debian,FreeBSD,Ubentu等). Linux主机采用国内功能最 ...

  8. HTML 5  标签

    HTML 5 标签 标签定义文档中的节(section.区段).比如章节.页眉.页脚或文档中的其他部分. E 9+.Firefox.Opera.Chrome 和 Safari 标签. 注释:IE 8 ...

  9. 网站地图怎么做?dedecms网站地图制作方法听语音

    网站地图怎么生成?下面分享织梦dedecms系统网站地图的生成方式,怎么制作网站地图,方法很简单.下面介绍一下网站地图优化方法及制作方法. 工具/原料 一个网站 方法/步骤 第一步 登录网站后台 第二 ...

  10. Python解析JSON详解

    JSON 函数 使用 JSON 函数需要导入 json 库:import json. 函数  描述 json.dumps  将 Python 对象编码成 JSON 字符串 json.loads  将已 ...