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

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

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

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

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

一、什么是Cookie

Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而存储在用户本地终端上的数据(通常经过加密)。
Cookie是小量信息,是由Web服务器创建的,将信息存放在用户计算机的文件上
1
通过上述页面我们可以看到,登陆上去会有提示,图中马赛克部分。

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

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

1、Cookie的响应过程

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

一个简单的Cookie
4
或者通过console输入查找
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
7

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

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

1、未登录时的页面

8

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

2、登陆时的页面

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

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

3、登陆后

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

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

13

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

14

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

它返回的Cookie如下图:
16

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

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

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

二、模拟登陆

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

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

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

这个时候我们来看一下responseCookie,
22
然后接着往下看这个cookie会添加到后来的Request Cookies
23
24

  • 44
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 36
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值