猿人学web端爬虫攻防大赛赛题解析_第三题:访问逻辑

本文详细解析了web爬虫攻防大赛第三题的访问逻辑,指出了解题的关键在于理解先访问logo页面获取sessionid,再携带sessionid请求数据的逻辑。同时,文章强调了请求头顺序的重要性,推荐使用cURL命令获取原始请求头,并介绍了requests库携带请求头的两种方式。
摘要由CSDN通过智能技术生成

1、前言

好嘛,终于来到第三关了,继上次解完第二题后,大致看了下第三题,题目难度标注是“简单”,这可还行!终于碰到一道简单的赛题了,凭借前两题积累的小经验和小技巧,这题想来应该不会有什么大问题。然而我还是高估了自己,低估了题目,最终依然没能在不借助外力,不参考其他大佬解题思路的前提下把他整出来,怅恨久之!不过跟这道题死磕的一星期里还是有一些收获,闲言少叙,接下来进入正题!

2、题目理解

这道题的名称其实很有意思,从题目链接点进来以后,会发现网页的title显示的是罗生门,好奇的我专门查了下罗生门什么意思,因为这搞不好会为解题提供点思路。一番百度搜索后发现就是说真相扑朔迷离、真假难辨,进而让我思考到会不会是提供假数据什么的,后来发现路子走歪了,关键还在于网页的访问逻辑
在这里插入图片描述

3、解析过程

3.1、逻辑分析

3.1.1、一回生

一开始还是照例,打开开发者模式,观察访问页面是发生了哪些请求
问题描述
从观察到的请求链接来看,不出所料,数据也是通过AJAX请求获得的,
在这里插入图片描述观察这个请求的返回值:http://match.yuanrenxue.com/api/match/3,可以发现数据就是通过这个api返回的。
数据页那么问题来了,这个请求是否携带了什么加密参数,或者cookie信息?查看请求头,发现请求时的确携带了这个叫sessionid的cookie信息,并且响应头里也返回了Set-Cookie,也就是说在发送完请求后,服务器会返回sessionid,大胆推测一下,之后请求的时候带上这个sessionid是否可以会通过服务器校验,直接返回数据?
cookie
经过几次翻页,可以发现之后的请求,我们cookie里携带的是这个sessionid,服务器每次也会返回Set-Cookie信息,并且与最初的sessionid一致。
翻页看起来发现了不得了的规律,接下来,就在请求头里携带这个sessionid模拟一下,直接请求这个数据接口!理想很丰满,现实很骨干,当场失败!看起来返回了一段类似加密的代码,这里尝试了一同分析,发现这段js脚本跟我们的sessionid毫无关系,就是干扰项。
看起来

3.1.2、二回熟

上面那波分析显然没走到正途上,再回头仔细看看访问页面时发送的所有请求,可以看出每次请求数据时,都会先请求logo这个链接,之后才是数据页,那么整个逻辑会不会是访问logo时先返回了sessionid,之后再带着它去访问数据页。

logo

为了验证上面的想法,先把cookie清一清,重新刷新下页面:
在这里插入图片描述
可以发现在初次请求时,logo页是不带cookie的,并且响应头里的确返回了Set-Cookie值:
logo请求而在请求数据api接口时,发现这里携带的sessionid的值与请求logo页面返回的Set-Cookie的sessionid值是一致的,也就是说,每次请求数据时,确实是:先请求了logo页面,之后再带着这里返回的sessionid去请求数据api接口。

在这里插入图片描述经过上面一番分析,可以说整个访问逻辑基本已经清晰了,要想拿到数据,首先就要访问logo页,否则无法携带正确的cookie信息发起数据请求。

3.1.3、三回滑铁卢

就目前而言这题对我来说已经没什么秘密了,就是这样!接下来还不是轻轻松松请求到数据,验证我严谨缜密的推理的时候!事实证明,人有时候还是不能盲目自信,尤其是当你还是个菜鸡的时候,你走的每一步都要再三考虑,是不是还有哪里

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值