当前位置: 首页 > news >正文

猿人学 — 第1届第13题(解题思路附源码)

猿人学 — 第1届第13题(解题思路附源码)

  • 发现在翻页过程中,只要中途有几秒的间隔,那么就会显示拉取数据失败,然后网页重新加载回到刚进来显示的第一页的情况
    在这里插入图片描述

  • 重新加载时,会发送一系列的请求,发现其中向地址https://match.yuanrenxue.cn/match/13发送一前一后两个请求,
    在前一个请求中,发现响应头中有Set-Cookie,因此猜测若想访问各个页面则需要先访问这个请求获取sessionid
    在这里插入图片描述

  • 另外还发现,后一个请求中携带的Cookie中的yuanrenxue_cookie与前一个请求中携带的不一样,并且在目标页面访问过程中
    携带的yuanrenxue_cookie和后一个请求中携带的是一样的

    在这里插入图片描述
    在这里插入图片描述

  • 那么后面请求中的yuanrenxue_cookie是从哪里来的呢?这个Cookie值的改变发生在第一次向https//match.yuanrenxue.cn/match/13请求后,
    但是在chrome中又没有看到这个请求的返回值,猜想是不是返回值在chrome中不支持显示,因此用Fildder抓包再看一看各个请求的具体情况,验证一下猜想
    在这里插入图片描述

  • 果然发现这个请求其实是有返回值的,我们把关键信息放入Console面板一输出再比对请求,发现这就是我们想要的yuanrenxue_cookie

    在这里插入图片描述

  • 源码如下

    import re
    import requests# 创建会话并设置请求头和cookie
    obj = requests.session()
    obj.headers={'Referer':'https://match.yuanrenxue.cn/list','User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like 	Gecko) Chrome/129.0.0.0 Safari/537.36',
    }
    # 设置成自己的sessionid
    obj.cookies.set('sessionid','k0tkqbv28g7ubtjyr1e5a3mjcyzz98uf')# 获取更新后的yuanrenxue_cookie值
    res = obj.get(url='https://match.yuanrenxue.cn/match/13')
    cookie_list = eval(re.findall('\(.*\)',res.text)[0]).split('=')
    obj.cookies.update({cookie_list[0]:cookie_list[1]}
    )
    # 访问具体页面时一定要注意先更新请求头信息中的Referer
    obj.headers.update({'Referer':'https://match.yuanrenxue.cn/match/13'})# 向各个页面发送请求并获取数据
    total_value = 0
    for pid in range(1,6):res = obj.get(url=f'https://match.yuanrenxue.cn/api/match/13?page={pid}')data = res.json()['data']print(f"第{pid}页数据:{data}")for item in data:total_value += int(item['value'])print(f"前5页数字总和:{total_value}")
  • 运行结果

    在这里插入图片描述
    在这里插入图片描述

  • 笔者为刚接触逆向的小白,若上面有错误、不合理和值得优化的地方,欢迎各位大佬批评指正!


http://www.mrgr.cn/news/47527.html

相关文章:

  • el-table大数据量树形表格虚拟渲染,结合复选框的功能实现,利用vxe-table组件可实现该功能,不是手写!!!
  • 后端Java开发:第十二天
  • 慧集通(DataLinkX)iPaaS集成平台-如何制作API接口
  • ComfyUI的API使用教程
  • 实现Android应用开机自启功能
  • AI刷题-异或编码、拼凑单词 chi
  • k8s 1.28.2 集群部署 MinIO 分布式存储
  • vue2项目的路由使用history模式,刷新会导致页面404的问题
  • 【JavaEE】——回显服务器的实现
  • 2024.10月7~10日 进一步完善《电信资费管理系统》
  • 2024互联网下载神器IDM6.42你值得拥有
  • xtu oj 四位数
  • DGL库之HGTConv的使用
  • JavaGuide(3)
  • IDM6.42下载器最新版本,提速你的网络生活!
  • Python的输入输出函数
  • 心觉:开发潜意识的详细流程和步骤是什么
  • 跟《经济学人》学英文:2024年10月05日这期 Workouts for the face are a growing business
  • 从0开始深度学习(7)——线性回归的简洁实现
  • 等保测评:如何建立有效的网络安全监测系统
  • 代码随想录算法训练营第四十六天 | 647. 回文子串,516.最长回文子序列
  • ssm基于Javaee的影视创作论坛的设计与实现
  • 论文《OneLLM:One Framework to Align All Modalities with Language》
  • [SAP ABAP] LIKE TABLE OF
  • netty详细说明ByteBuf的使用
  • 五、创建型(建造者模式)