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

举报
悦来客栈的老板 发表于 2020/12/29 00:54:47 2020/12/29
【摘要】 实战地址 http://match.yuanrenxue.com/match/3 抓包分析 地址栏输入 地址,按下F12并回车,发现数据在这里: 请求中有个 sessionid 字段的cookie,估计需要该值: 点击第二页,再分析,如下: 原来先访问了 : http://match.yuanrenxue.com/logo...

实战地址

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之后,才能拿到数据,否则在错误的基础上返回的肯定是错误的数据

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


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

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

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

完整源码

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

数据获取的代码如下:


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

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

文章来源: blog.csdn.net,作者:悦来客栈的老板,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq523176585/article/details/109507670

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。