爬虫之模拟登录--验证码+cookies+session

目录

  • 验证码识别
    • 概念
  • 模拟登录
  • cookies
    • 概念
    • 处理方法
    • session会话
    • cookies的存储与读取
      • 存储
      • 读取
      • 代码示例

验证码识别

概念

一种反爬机制。需要识别图片中的数据,用于模拟登录操作。

识别验证码图片的操作:

1、人工肉眼识别,不推荐

2、第三方自动识别
① 云打码 ()

流程:

1、将验证码图片进行本地下载

2、调用平台提供的示例代码进行图片数据识别

模拟登录

爬取基于某些用户的数据。

需求:对人人网进行模拟登录。

进行登录操作,经分析发现:

1、点击登录按钮会发起一个post请求

2、post请求中会携带登录之前录入的参数(用户名、密码、验证码等)

3、验证码每次请求都会动态变化

步骤分析:

1、爬取登录页面,获取验证码图片信息,保存到本地

2、通过第三方平台识别验证码信息

3、获取登录url,对此url发起post请求,封装所需参数

4、打印请求码,看是否成功

进一步的需求:爬取当前用户的个人主页对应的页面数据

步骤:对个人主页的url发起请求,进行数据解析。

请求后发现,页面跳转到登录页面,并未请求到个人主页页面数据。

原因:http/https协议的特性之一就是无状态,服务器不会保留用户状态。何为无状态?就是一旦浏览器和服务器之间的请求和响应完毕后,两者会立马断开连接,也就是恢复成无状态。这样会导致:服务器永远无法辨认,也记不住用户的信息,像一条只有7秒记忆的金鱼。是cookie和session的出现,才破除了web发展史上的这个难题。cookie不仅仅能实现自动登录,因为它本身携带了session的编码信息,网站还能根据cookie,记录你的浏览足迹,从而知道你的偏好,只要再加以推荐算法,就可以实现给你推送定制化的内容。在发起第二次基于个人主页页面的请求的时候,服务器端并不知道此请求时基于登录状态下的请求。

cookies

用抓包工具对个人主页url进行分析,发现request headers中带有cookies参数。

概念

用来让服务器端记录客户端的相关状态。

处理方法

1、手动处理:通过抓包工具获取cookies值,将改值封装到headers中,不推荐。

2、自动处理

1)cookie值得来源在哪里?

- 模拟登录post请求后,由服务器端创建。
- 在response headers里有set cookie的参数,就是服务器往浏览器写入了cookie。

2)用法
cookie在我们日常访问网站的过程中随处可见。例如当我们需要经常登录一个网站,但是又不想每次都输入账号密码时,我们可以勾选一个“记住我”的选项。勾选之后,当我们再打开这个网站就会自动登录,这就是cookie在起作用。
当你登录并勾选“记住我的登录信息”,服务器就会生成一个cookie和这个账号绑定。接着,它把这个cookie告诉你的浏览器,让浏览器把cookie存储到你的本地电脑。当下一次,浏览器带着cookie访问博客,服务器会知道你是此账户,你不需要再重复输入账号密码,即可直接访问。
当然,cookie也是有时效性的,过期后就会失效。你应该有过这样的体验:哪怕勾选了“记住我”,但一段时间过去了,网站还是会提示你要重新登录,就是之前的cookie已经失效。

3) 代码示例
爬虫之模拟登录--验证码+cookies+session_第1张图片爬虫之模拟登录--验证码+cookies+session_第2张图片

session会话

1、session会话对象

- 作用:
  ① 可以进行请求的发送;
  ②如果请求过程中产生了cookie,则该cookie会被自动存储/携带在该session对象中。

- 创建session对象:session = requests.Session()

- 使用seesion对象进行模拟登录post请求的发送(cookie会被存储在session中)

- 再利用session对象对个人主页对应的url发送get请求(已携带cookie)

2、代码示例爬虫之模拟登录--验证码+cookies+session_第3张图片
爬虫之模拟登录--验证码+cookies+session_第4张图片

cookies的存储与读取

避免每次都要输账号密码,需要存储存读取cookie

存储

登录的cookie类型是RequestCookieJar,要将cookie存储为文件,需要以下转换过程:

cookies --> 字典 --> json
爬虫之模拟登录--验证码+cookies+session_第5张图片
爬虫之模拟登录--验证码+cookies+session_第6张图片
爬虫之模拟登录--验证码+cookies+session_第7张图片

读取

存储cookie时,是把它先转成字典,再转成字符串。读取cookie则刚好相反,要先把字符串转成字典,再把字典转成cookie本来的格式。
爬虫之模拟登录--验证码+cookies+session_第8张图片

代码示例

爬虫之模拟登录--验证码+cookies+session_第9张图片
爬虫之模拟登录--验证码+cookies+session_第10张图片
爬虫之模拟登录--验证码+cookies+session_第11张图片

你可能感兴趣的:(python爬虫)