当我们真正开始数据采集的操作之后,我们遇到的第一个问题就是,如何获取登录窗口背后的数据 许多网站的内容是需要登录之后才能抓取的,如微博,百度云盘,知乎等。这些网站只有登录之后才能看到想要的信息。
登录权限包含什么? 1、服务器生成的令牌 2、登录有效时限 3、状态跟踪信息
Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而存储在用户本地终端上的数据(通常经过加密)。 Cookie是小量信息,是由Web服务器创建的,将信息存放在用户计算机的文件上
通过上述页面我们可以看到,登陆上去会有提示,图中马赛克部分。
上述返回200代表成功访问,这是为什么呢?因为我们添加了Cookie
一个简单的Cookie
或者通过console输入查找
Chrome DevTools是Chrome浏览器自带的开发人员工具,我们检测网络流量要用到的是其中的Network面板 默认情况下,只要DevTools在开启状态,DevTools会记录所有的网络请求,记录都是在Network中展示出来
上述的过程都是建立在登录有Cookie的前提下才能进行访问查看,如果没有登录则不能查看及操作。
我们可以看到返回值为302,查看也没有cookie信息
下图中的img_base64实际上时验证码登录的提示
在输入账号密码和验证码成功后,要点击Preserve log
,如果不选择此处,当我们打开新的的网页时,会被冲刷掉。
由上图我们通过点击sign_in
可以查看到生成的cookie
,这个cookie
实际上是由sign_in
上面的页面生成的。
红框1是一个K-V键值对的结构,相当于我们get时写的那些参数。 红框2是加密过的信息
上图红框处为一个不知道的参数,但是如果没有这个可能就会请求不到我们想要的东西
上图红框处为为防跨站攻击的 sign_in实际上就是我们登录网页的所有操作的页面,
它返回的Cookie如下图:
下面我们进行的操作可能都要带着这个返回的Cookie来进行
如果想要产生新的cookie,我们只需要clear掉原来的cookie即可。如下图:
但是删除cookie以后就不保持登录状态了,我们打开网页还要重新进行登录:
模拟登录的实现需要以下几个步骤: 1、用Chrome Inspect等工具研究网页登录的交互流程 2、确定登录的方式(
GET
或POST
),以及登录时需要附带的信息 3、保存登录成功的信息(Cookie等),并在以后每次请求时都附带同样的信息
经过观察发现,上述标记处都返回有cookie
,每一个都有set-cookie
,其中,captcha?lang=cn
属于验证码页面,如果显示为False
则此次不用输入验证码,如果显示为Ture
,则此次需要输入验证码。
下面登陆成功后,我们来看一下登录的接口:
这个时候我们来看一下response
Cookie,
然后接着往下看这个cookie
会添加到后来的Request Cookies