js逆向系列之猿人学爬虫第13题
文章目录
- 1. 目标网址
- 2. 抓包分析
- 3. 编码测试
1. 目标网址
目标网站:猿人学web第13题
2. 抓包分析
浏览器打开无痕模式,看第一页数据包:
两个名叫13的包,第二个有数据,是请求了一个api接口,第一个推断应该是加载了cookie。
点一下第二页:
发现抓不到这个包,说明有cookie验证。
我们不用无痕窗口看一下第二页:
发现是可以看的,所以接下来我们的解决思路就有了,我们先直接对这个网站发请求:
import requestssession = requests.Session()
headers = {"User-Agent": "yuanrenxue.project",
}url = "http://match.yuanrenxue.com/match/13"
r = session.get(url)
print(r.text)
结果:
<script>document.cookie=('y')+('u')+('a')+('n')+('r')+('e')+('n')+('x')+('u')+('e')+('_')+('c')+('o')+('o')+('k')+('i')+('e')+('=')+('1')+('6')+('4')+('8')+('1')+('8')+('5')+('0')+('8')+('2')+('|')+('9')+('I')+('B')+('q')+('4')+('J')+('X')+('j')+('u')+('e')+('i')+('R')+('B')+('Q')+('V')+('C')+('T')+('x')+('j')+('E')+('m')+('u')+('C')+('G')+('r')+('K')+('m')+('E')+('A')+('W')+('8')+('r')+('B')+('q')+('H')+('x')+('w')+('b')+('l')+('b')+('m')+('p')+('r')+('p')+('Y')+('y')+('X')+('m')+('2')+('e')+('z')+('6')+('K')+('L')+('g')+('T')+('s')+('b')+('E')+('N')+('J')+('j')+('E')+('M')+('D')+('z')+('L')+('I')+('7')+('V')+('5')+('Y')+('5')+('V')+('A')+('J')+('M')+('4')+('f')+('D')+('4')+('Q')+('G')+('2')+('9')+('M')+('C')+('u')+('8')+('B')+('P')+('c')+('1')+('1')+('7')+('c')+('d')+('w')+('v')+('m')+('V')+('D')+('v')+('W')+';path=/';location.href=location.pathname+location.search</script>
发现响应里面是分开凑的cookie,我们看一下第一页第一个包的cookie:
是有这个yuanrenxue_cookie的,接下来我们就只需要把cookie拼接完整,
然后拿到这个cookie,再用它保持会话状态去向其他页发请求应该就可以了。
3. 编码测试
注意:第四页和第五页的数据必须要用账号登录,把cookie放到程序里才可以拿到,并且sessionid必须在浏览器一直是登录状态才有效,一旦退出登录,sessionid会失效
这里先拿前三页:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author : 冰履踏青云
# @File : 13.py
import requests
import re
import jsonpathdef get_data(page):session = requests.Session()headers = {"User-Agent": "yuanrenxue.project",}url = "http://match.yuanrenxue.com/match/13"r = session.get(url)# print(r.text)results = re.findall("'([a-zA-Z0-9=|_])'",r.text)# print(results)cookie = ''.join(results)# print(cookie)key, value = cookie.split('=')session.cookies.set(key, value)api_url = 'https://match.yuanrenxue.com/api/match/13?page={}'.format(str(page))res = session.get(api_url,headers=headers)# print(res.json())values_list = jsonpath.jsonpath(res.json(),"$..value")return values_listif __name__ == '__main__':res_list = []for i in range(1, 4):values_list = get_data(i)res_list.extend(values_list)print(res_list,len(res_list))print('前三页所有数字之和为:',sum(res_list))
结果:
我再登录一下,把cookie复制一下,把五页全部拿完:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author : 冰履踏青云
# @File : 13.py
import requests
import re
import jsonpathdef get_data(page):session = requests.Session()# 每次请求cookie都加上sessionidrequests.utils.add_dict_to_cookiejar(session.cookies, {"sessionid": "t0yfp9ec52jvopntggd4ifxbbdwt3eg0"})headers = {"User-Agent": "yuanrenxue.project",}url = "http://match.yuanrenxue.com/match/13"r = session.get(url)# print(r.text)results = re.findall("'([a-zA-Z0-9=|_])'",r.text)# print(results)cookie = ''.join(results)print(cookie)key, value = cookie.split('=')session.cookies.set(key, value)cookie = {"cookie":"sessionid=t0yfp9ec52jvopntggd4ifxbbdwt3eg0"}api_url = 'https://match.yuanrenxue.com/api/match/13?page={}'.format(str(page))res = session.get(api_url,headers=headers)# print(res.json())values_list = jsonpath.jsonpath(res.json(),"$..value")return values_listif __name__ == '__main__':res_list = []for i in range(1, 6):values_list = get_data(i)# print(values_list)res_list.extend(values_list)print(res_list,len(res_list))print('所有数字之和为:',sum(res_list))
结果:
这里代码只需要换上你自己登录之后的sessionid就可以了,这个sessionid每次登录都不一样,退出登录就会失效,所以运行程序时浏览器要保持登录状态。
文章到此结束,但愿本文能对你有一点点帮助,欢迎三连,点个赞,收个藏啥的,有问题的尽管砸来,我有故事你有酒,好好交流不分手!下次见!
js逆向系列之猿人学爬虫第13题相关推荐
- js逆向系列之猿人学爬虫第17题-天杀的http2.0
文章目录 1. 目标网站 2. 抓包分析 3. 编码测试 1. 目标网站 网址: https://match.yuanrenxue.com/match/17 2. 抓包分析 这道题目,叫天杀的http ...
- JS逆向实战17——猿人学第七题 动态字体 随风漂移
声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 网站 第七题 动态字体,随 ...
- JS逆向:猿人学爬虫比赛第九题详细题解
实战地址 http://match.yuanrenxue.com/match/9 抓包分析 地址栏输入 地址,按下F12并回车,浏览器停在这里: 不用理会它,点击下图所示的按钮: 按下F8,让浏览器继 ...
- AST反混淆实战:猿人学爬虫比赛第二题详细题解
缘起 应星友要求,写下此文,哎,有钱能使鬼推磨. 实战地址: http://match.yuanrenxue.com/match/2 抓包分析 由于谷歌浏览器某些请求不会显示,建议使用火狐浏览器来抓包 ...
- [007]爬虫系列 | 猿人学爬虫攻防大赛 | 第五题: js混淆 乱码增强(中)
一.备注 在阅读此文章前,请先阅读前一篇<[007]爬虫系列 | 猿人学爬虫攻防大赛 | 第五题: js混淆 乱码增强(上)> 二.找参数来源(二) 在前一篇文章中,我们找出了Cookie ...
- [007]爬虫系列 | 猿人学爬虫攻防大赛 | 第五题: js混淆 乱码增强(下)
一.备注 在阅读此文章前,请先阅读前两篇 <[007]爬虫系列 | 猿人学爬虫攻防大赛 | 第五题: js混淆 乱码增强(上)> <[007]爬虫系列 | 猿人学爬虫攻防大赛 | 第 ...
- [007]爬虫系列 | 猿人学爬虫攻防大赛 | 第二题: js 混淆 - 动态Cookie
一.题目 链接: <猿人学爬虫攻防大赛 | 第二题: js 混淆 - 动态Cookie> 二.分析 按照以往习惯,我们先按F12打开控制台,Network抓包,勾选preserve log ...
- 猿人学·爬虫逆向高阶课
我跟 virjar 出了一套爬虫课(猿人学·爬虫进阶培训课),包含:安卓逆向抓取.JS 高阶逆向抓取.安卓群控抓取.容器定制化等. 实际上我去年就在做这个爬虫课了,一直没有放到网课平台上公开宣传,但是 ...
- 【JS逆向系列】某空气质量监测平台无限 debugger 与 python算法还原
[JS逆向系列]某空气质量监测平台无限 debugger 与 python算法还原 1.前置阅读 2.过反调试 3.js分析 4.代码逻辑改写 1.前置阅读 样品地址:aHR0cHM6Ly93d3cu ...
最新文章
- Google Brain大牛Jeff dean视频
- Linux下如何查看哪些端口处于监听状态
- Android Kotlin 协程async
- 缓存-分布式锁-Redisson简介整合
- 判断是否为自然数java_java判断输入的是否是自然数
- 《敏捷软件开发》读书笔记 (3)--敏捷语录
- mysql where过滤
- Java学习之「Spring + AspectJ 」
- 计算机符号大全名字大全,符号大全_特殊符号网名大全
- 水果店营业额下降原因,水果店如何提高营业额
- LaTex便捷插入罗马数字
- oracle 获取日期的毫秒_Oracle date timestamp 毫秒 - 时间函数总结(转)
- 静态链接库(Lib) 与 动态链接库(DLL)
- 八个步骤教你做好会议现场管理
- 【自动驾驶】【数据集】KITTI数据集简介和使用+ KITTI数据集国内下载地址
- 十大护眼灯品牌什么牌子好?盘点护眼灯品牌排行前十名
- 企业微信api接口调用-触发推送企业微信微信好友
- 高数 李永乐 第一章
- 如何较为优雅地实现新手引导功能?
- 中国移动BOSS系统