前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速入门网络爬虫系列 Chapter13 | 模拟登陆

快速入门网络爬虫系列 Chapter13 | 模拟登陆

作者头像
不温卜火
发布2020-10-28 14:51:25
6120
发布2020-10-28 14:51:25
举报
文章被收录于专栏:不温卜火

当我们真正开始数据采集的操作之后,我们遇到的第一个问题就是,如何获取登录窗口背后的数据 许多网站的内容是需要登录之后才能抓取的,如微博,百度云盘,知乎等。这些网站只有登录之后才能看到想要的信息。

  • 对于需要登录的网站,网站和用户都不希望每打开一个新网页就要重新登录以下,所以这就需要记录用户的登录状态信息
  • 大多数的新式网站都用Cookie跟踪用户是否已登录的状态信息
  • 网站通过验证用户的的登录权证,会将其保存在用户浏览器的Cookie中

登录权限包含什么? 1、服务器生成的令牌 2、登录有效时限 3、状态跟踪信息

  • 由于HTTP本身是无状态的,服务器需要利用Cookie保存登录信息
  • 模拟登录是在每次发送请求时在请求的header中带上Cookie
  • 网站会将这些Cookie作为信息验证的证据,在浏览网站的每个网页时出示给服务器

一、什么是Cookie

Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而存储在用户本地终端上的数据(通常经过加密)。 Cookie是小量信息,是由Web服务器创建的,将信息存放在用户计算机的文件上

1
1

通过上述页面我们可以看到,登陆上去会有提示,图中马赛克部分。

  • 由于HTTP是一种无状态的协议,服务器但从网络连接上不能知道客户身份。如果想要知道客户身份,这是就需要一张通行证,每人一个,无论谁访问都必须携带自己的通行证。这样服务器就能通过通行证来确定客户身份,这就是Cookie的工作原理。
2
2

上述返回200代表成功访问,这是为什么呢?因为我们添加了Cookie

1、Cookie的响应过程

  1. 客户端发送一个http请求到服务器端,如果是登录操作则携带我们的用户名和密码。
  2. 服务器端验证后发送一个http响应到客户端,其中包含Set-Cookie头部。
  3. 客户端发送一个http请求到服务器端,其中包含Cookie。
  4. 服务器端发送一个http响应到客户端。
3
3

一个简单的Cookie

4
4

或者通过console输入查找

5
5

2、Cookie的核心内容

  • String name:该Cookie的名称。Cookie一旦创建,名称不可更改
  • Object value:Cookie的值
  • int maxAge:Cookie失效时间,单位为秒
  • boolean secure:该Cookie是否仅被使用含权协议传输
  • String path:Cookie的使用路径
  • String domain:可以访问该Cookie的域名
  • String comment:Cookie的使用说明
  • int version:该Cookie使用的版本号

3、DevTools(开发人员工具)

Chrome DevTools是Chrome浏览器自带的开发人员工具,我们检测网络流量要用到的是其中的Network面板 默认情况下,只要DevTools在开启状态,DevTools会记录所有的网络请求,记录都是在Network中展示出来

3.1、打开方式

  • 在浏览器内:右键->审查元素 对应快捷键:ctrl+shift+c
  • 点击浏览器右上角设置->工具->开发者工具 对应快捷键:ctrl+shift+i或F12
  • 直接使用快捷键 ctrl+shift+j打开控制台(console面板)

3.2、通过开发人员工具查看各种信息

6
6
7
7

上述的过程都是建立在登录有Cookie的前提下才能进行访问查看,如果没有登录则不能查看及操作。

3.3、查看网站的实际登录过程

1、未登录时的页面
8
8

我们可以看到返回值为302,查看也没有cookie信息

2、登陆时的页面

下图中的img_base64实际上时验证码登录的提示

9
9
10
10

在输入账号密码和验证码成功后,要点击Preserve log,如果不选择此处,当我们打开新的的网页时,会被冲刷掉。

3、登陆后
11
11

由上图我们通过点击sign_in可以查看到生成的cookie,这个cookie实际上是由sign_in上面的页面生成的。

12
12

红框1是一个K-V键值对的结构,相当于我们get时写的那些参数。 红框2是加密过的信息

13
13

上图红框处为一个不知道的参数,但是如果没有这个可能就会请求不到我们想要的东西

14
14

上图红框处为为防跨站攻击的 sign_in实际上就是我们登录网页的所有操作的页面,

15
15

它返回的Cookie如下图:

16
16

下面我们进行的操作可能都要带着这个返回的Cookie来进行

如果想要产生新的cookie,我们只需要clear掉原来的cookie即可。如下图:

17
17

但是删除cookie以后就不保持登录状态了,我们打开网页还要重新进行登录:

18
18

二、模拟登陆

模拟登录的实现需要以下几个步骤: 1、用Chrome Inspect等工具研究网页登录的交互流程 2、确定登录的方式(GETPOST),以及登录时需要附带的信息 3、保存登录成功的信息(Cookie等),并在以后每次请求时都附带同样的信息

19
19

经过观察发现,上述标记处都返回有cookie,每一个都有set-cookie,其中,captcha?lang=cn属于验证码页面,如果显示为False则此次不用输入验证码,如果显示为Ture,则此次需要输入验证码。

20
20

下面登陆成功后,我们来看一下登录的接口:

21
21

这个时候我们来看一下responseCookie,

22
22

然后接着往下看这个cookie会添加到后来的Request Cookies

23
23
24
24
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么是Cookie
    • 1、Cookie的响应过程
      • 2、Cookie的核心内容
        • 3、DevTools(开发人员工具)
          • 3.1、打开方式
          • 3.2、通过开发人员工具查看各种信息
          • 3.3、查看网站的实际登录过程
      • 二、模拟登陆
      相关产品与服务
      验证码
      腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档