反爬机制:验证码。识别验证码图片中的数据,用于模拟登录操作
识别验证码的操作:
1、人工识别(不推荐);
2、第三方自动识别。
第三方平台
-云打码http://www.yundama.com/demo.html
云打码的使用流程:
注册:普通和开发者用户
登录:
普通用户的登录:查询该用户是否还有剩余的题分
开发者用户的登录:
创建一个软件:我的软件-》添加新软件一》录入软件名称-》提交(软件id和秘钥)
下载示例代码:开发文档-》点此下载:云打码接口DLL-》Pythonhttp示例下载
实战:识别古诗文网登录页面中的验证码。
使用打码平台识别验证码的编码流程:
-将验证码图片进行本地下载
-调用平台提供的示例代码进行图片数据识别
其他
模拟登录实现流程
模拟登录:
爬取基于某些用户的用户信息。
需求:对人人网进行模拟登录
点击登录按钮之后会发起一个post请求
post请求中会携带登录之前录入的相关的登录信息(用户名,密码,验证码……)
验证码:每次请求都会变化
需求:爬取当前用户的相关的用户信息(个人主页中显示的用户信息)
发了2次请求。
http/https协议特性:无状态。
没有请求到对应页面数据的原因:
发起的第二次基于个人主页页面请求的时候,服务器端并不知道该此请求是基于登录状态下的请求。
cookie (存储状态 )
手动处理
通过抓包工具获取cookie值,将该值封装到headers中。(不建议)
#headers = {
# ‘Cookie’:’xxxx’
# }
cookie有个有效时长。
自动处理
- cookie值的来源是哪里?<br /> - 模拟登录post请求后,由服务器端创建。session会话对象:<br /> - 作用:<br /> 1.可以进行请求的发送。<br /> 2.如果请求过程中产生了cookie,则该cookie会被自动存储/携带在该session对象中。- 创建一个session对象:session = requests.Session()<br /> - 使用session对象进行模拟登录post请求的发送(cookie就会被存储在session中)<br /> - session对象对个人主页对应的get请求进行发送(携带了cookie)
代理
破解封IP这种反爬机制。
什么是代理:
代理服务器。
代理的作用:
-突破自身IP访问的限制。
-隐藏自身真实IP
代理相关的网站
-快代理
-西祠代理
-www.goubanjia.com
代理ip的类型
代理ip的类型
- http:应用到http协议对应的url中
- https:应用到https协议对应的url中
代理ip的匿名度
-透明:服务器知道该次请求使用了代理,也知道请求对应的真实ip
- 匿名:知道使用了代理,不知道真实ip
- 高匿:不知道使用了代理,更不知道真实的ip
