第三题:访问逻辑 - 推心置腹
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里携带的是这个sessionid,服务器每次也会返回Set-Cookie信息,并且与最初的sessionid一致。
看起来发现了不得了的规律,接下来,就在请求头里携带这个sessionid模拟一下,直接请求这个数据接口!理想很丰满,现实很骨干,当场