JS逆向:猿人学爬虫比赛第三题详细题解

实战地址

http://match.yuanrenxue.com/match/3

抓包分析

地址栏输入 地址,按下F12并回车,发现数据在这里:

请求中有个 sessionid 字段的cookie,估计需要该值:

点击第二页,再分析,如下:

原来先访问了 :

http://match.yuanrenxue.com/logo

这个接口,返回设置 cookie,然后再带着这个cookie 请求类似这个接口:

http://match.yuanrenxue.com/api/match/3?page=2

即可。

这里要注意先后顺序,必须是请求 logo这个接口并设置好cookie之后,才能拿到数据,否则在错误的基础上返回的肯定是错误的数据

没有任何反爬,直接检测了浏览器的相关字段:

headers = {
    "Accept-Language": "zh-CN,zh;q=0.9",
    'Referer': 'http://match.yuanrenxue.com/match/3',
}

headers必须带 "Accept-Language" 和 "Referer"字段,且不能包含 "Host"字段,否则也无法返回正确的结果。这种情况,只能一个一个试了。

另外还有一个requests库的坑,我原本想让Session()来保持cookie,发现如果将 session.headers进行赋值的话,也一样拿不到数据

完整源码

虽然headers不需要带UA也能拿到数据,不过里面带UA是个好习惯哦。

数据获取的代码如下:

import requests
session = requests.Session()
headers = {
    "Accept-Language": "zh-CN,zh;q=0.9",
    'Referer': 'http://match.yuanrenxue.com/match/3',
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
}
cookie_url = "http://match.yuanrenxue.com/logo"
for page in range(1,6):
    r = session.post(cookie_url,headers = headers)
    api_url = f"http://match.yuanrenxue.com/api/match/3?page={page}"
    r = session.get(api_url,headers = headers)
    print (r.text)

至于题目代码,请读者自行完成。也就调个库的事。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值