JS逆向:猿人学爬虫比赛第三题详细题解
【摘要】
实战地址
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之后,才能拿到数据,否则在错误的基础上返回的肯定是错误的数据。
没有任何反爬,直接检测了浏览器的相关字段:
-
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)
至于题目代码,请读者自行完成。也就调个库的事。
文章来源: blog.csdn.net,作者:悦来客栈的老板,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq523176585/article/details/109507670
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)