Python 爬虫闯关(第三关)

第三关开始有点难度了,本关的难点就是所谓的两层认证,需要获取处理 cookie

闯关地址是:http://www.heibanke.com/lesson/crawler_ex02/

页面分析

刚进入页面时没看懂是怎么玩,以为到这就结束了,抱着试试看的态度注册了下。

爬虫闯关 第三关

注册登录后,发现是一个记账点之类的,网页还没有跳转到题目网页,还不知道怎么玩。

重新从题目地址进入后,发现可以玩了:

题目页面

页面提示 比上一关多了两层保护

解题思路

题目中提到了两层保护,是哪两层呢?

首先,多了账号登陆一层,还有一层是什么呢?重新登陆,打开 firebug 记录一下整个流程:

请求处理流程

从动图中我们可以看到整个流程分为 4 步,依次点击 4 个步骤,分析记录请求标头、请求正文、响应标头、cookies 等是否有值,值为多少,值的来源与请求顺序之间的关系。

为了下文描述方便,我们约定两个变量:

  • URL=http://www.heibanke.com/lesson/crawler_ex02/
  • LOGIN_URL=http://www.heibanke.com/accounts/login/?next=/lesson/crawler_ex02/

第 1 步

首先访问 URL,浏览器会向 URL 发出 GET 请求,得到一个 302 的重定向的响应,响应标头中包含了一个 Location 字段,告诉浏览器新的访问地址 LOGIN_URL

如果之前用同样的浏览器闯过第一关或第二关,此请求的请求标头仍然会带上 cookie,但并无实际作用,可忽略;

第 1 步

第 2 步

浏览器向 LOGIN_URL 发出新的 GET 请求。我们注意到请求和响应中带了一个 cookie,其中都有一个 csrftoken 字段,其值为 708NMR2acyRWlblKw0rBqSjayL70TJDT。

如果仔细观察,第一步请求头的 cookie 中也有这么一个字段,我们将其记下,此 csrftoken 都将作为以后访问过程中的依据之一。我们将此返回的 cookie 记为 c1;

第 2 步

第 3 步

首先我们这里已经注册过了,直接填写登录信息,浏览器会再向 LOGIN_URL 发出 POST 请求,得到一个向第一步中 URL 的 重定向的 302 响应。

请求标头和请求正文中都附带上第二步中的 cookie c1,另外,我们发现请求正文参数中除了 username 和 password 字段外,还有一个 csrfmiddlewaretoken 字段

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值