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

news2024/11/26 0:25:37

猿人学 — 第1届第3题

  • 翻页发现一共有两个请求

    • 第一个请求:返回状态码为202(服务器已经接收请求,但尚未处理),响应头中还有一个Set-Cookie
      在这里插入图片描述

    • 第二个请求:返回了我们想要的数据,携带的Payload中也只有一个表示页数的参数m,不过携带的Cookie中有上一步返回的sessionid。因此猜想,若想获得页面中的数据,必须先发送第一个jssm的请求,获得返回的sessionid后再发送第二个请求
      在这里插入图片描述

  • 考虑到第一个请求返回的状态码为202,并且第二个请求建立在第一个请求基础上,因此采用requests模块中的requests.session()会话对象进行请求

    • 尝试1:请求头中设置了User-AgentRefererOriginCookie几个常见参数,发现请求返回数据不对
    • 尝试2:按照Chrome中Headers,将所有请求头参数补充上,发现请求返回数据还是不对
      在这里插入图片描述
  • 这就很奇怪了,第一步sessionid也获取了,为什么还是不行呢?打开Fiddler,看一下翻页发送的请求的具体情况。发现在请求的原始数据中,请求头中的参数与Chrome中是一致的,唯一不一样的是各个参数的顺序,难道是服务器检测了请求头的顺序?
    在这里插入图片描述

    • 尝试3:按照Filler中https//match.yuanrenxue.cn/api/match/3?page=3请求的原始数据重新排列请求头中的参数,还是发现请求返回数据不对
    • 尝试4:按照Filler中https//match.yuanrenxue.cn/jssm请求的原始数据重新排列请求头中的参数,终于获得了目标数据
    • 尝试5:在尝试4成功的基础上,修改请求头中一些参数的顺序,发现有时可以获得目标数据有时则不能
  • 猜测:服务器很可能是对请求头中某几个参数的相对位置进行了检测,仅为个人猜测,还请大佬们批评指正,不吝赐教。源码如下

    import requests
    # 创建会话,请求头完全按照Fiddler抓包jssm请求原始数据中的情况排列
    obj = requests.session()
    obj.headers = {
        'Host': 'match.yuanrenxue.cn',
        'Connection': 'keep-alive',
        'Content-Length': '0',
        'Pragma': 'no-cache',
        'Cache-Control': 'no-cache',
        'sec-ch-ua-platform': '"Windows"',
        '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',
        'sec-ch-ua': '"Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"',
        'sec-ch-ua-mobile': '?0',
        'Accept': '*/*',
        'Origin': 'https://match.yuanrenxue.cn',
        'Sec-Fetch-Site': 'same-origin',
        'Sec-Fetch-Mode': 'cors',
        'Sec-Fetch-Dest': 'empty',
        'Referer': 'https://match.yuanrenxue.cn/match/3',
        'Accept-Encoding': 'gzip, deflate, br, zstd',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        # Cookie中的sessionid设置成你自己的
        'Cookie': 'Hm_lvt_c99546cf032aaa5a679230de9a95c7db=1728573597; HMACCOUNT=5A088C25C5CFA391; qpfccr=true; no-alert3=true; Hm_lvt_9bcbda9cbf86757998a2339a0437208e=1728573661; tk=8258780053392544352; sessionid=78sqn10uftr6obdv5xb79bah299trkb8; Hm_lpvt_9bcbda9cbf86757998a2339a0437208e=1728573869; Hm_lpvt_c99546cf032aaa5a679230de9a95c7db=1728574043'
    }
    
    value_dict = {}
    for pid in range(1,6):
        obj.post(url='https://match.yuanrenxue.cn/jssm')
        res = obj.get(url=f'https://match.yuanrenxue.cn/api/match/3?page={pid}')
        data = res.json()['data']
        print(data)
        for item in data:
            count = value_dict.get(item['value'],0)
            value_dict[item['value']] = count + 1
    
    value_list = [(key,value) for key,value in value_dict.items()]
    value_list.sort(key=lambda x:int(x[1]),reverse=True)
    print(value_list)
    print(f"出现最多的申请号是{value_list[0][0]},出现的次数是{value_list[0][1]}次")
    
    
  • 运行结果
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2205076.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于M芯片MAC系统的hadoop、zookeeper、hbase安装

hadoop、zookeeper、hbase安装 1. vmware配置 搜索:“vmware for mac”,购买正版并下载,或通过其他渠道下载均可 随机掉落的奇怪链接 2. 下载镜像并安装虚拟机 bug记录1 此处选用ubuntu的20以及24,分别出现无法加载安装程序、…

会话管理:深入理解SQLAlchemy会话及其事务处理

引言 SQLAlchemy是一个流行的Python SQL工具包和对象关系映射(ORM)系统,它提供了一个高层的ORM以及底层的SQL表达式语言。在SQLAlchemy中,会话(Session)是与数据库交互的核心概念,它不仅负责对…

外卖配送小程序源码系统 带源代码包以及搭建部署教程

系统概述 外卖配送小程序源码系统是一套完整的解决方案,旨在帮助用户快速搭建自己的外卖配送平台。它融合了先进的技术和创新的设计理念,为用户提供了一个稳定、高效、易用的系统环境。 该系统基于移动端开发,能够与各种操作系统兼容&#…

2.stm32 GPIO输出

GPIO简介 GPIO(General Purpose Input Output)通用输入输出口 可配置为8种输入输出模式 引脚电平:0V~3.3V,部分引脚可容忍5V 输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等 …

网络变压器的作用是什么

在网络通讯主板上,在PHY芯片与RJ45连接器之间,会有一个黑属的小方块,这个东西就叫网络变压器,书名"数据录”人们常把它称为网络隔真变压务,LAN变压客,局域网变压器,滤波器等。 它在一块网络设备接口上所起的作用主要有两个; 一、传输数据,它把PHY送出来的差分信号用差模合…

电子元器件是电子电路中的基本组成部分

电子元器件是电子电路中的基本组成部分,主要包括以下几类: 一、电阻器 作用 限流:限制电路中的电流大小。分压:将电压按照一定比例分配。负载:作为电路中的负载元件。 分类 固定电阻:阻值固定不变。可变电阻…

ros1编译wpr_simulation库

目录 安装项目依赖包编译将环境参数加载到终端程序中运行编译好的ros程序 首先你下载好这个库以后。 安装项目依赖包 scripts库中,存放的是一些依赖项安装脚本以及python脚本。 进入到这个路径的终端。 输入 ./install_for_noetic.sh编译 输入下面命令&#xf…

小猿口算自动PK脚本

大家好,我是小黄。 近期,众多大学生炸鱼小猿口算APP,把一众小学生都快虐哭了,小黄听闻后,也跃跃欲试。对此小黄也参考网上的资料写了一个自动Pk的脚步。 首先大家需要安装一个pytorch环境过程中,如果小伙伴对此不熟悉的…

【YOLOv11】ultralytics最新作品yolov11 AND 模型的训练、推理、验证、导出 以及 使用

​目录 一 ultralytics公司的最新作品YOLOV11 1 yolov11的创新 2 安装YOLOv11 3 PYTHON Guide 二 训练 三 验证 四 推理 五 导出模型 六 使用 文档:https://docs.ultralytics.com/models/yolo11/ 代码链接:https://github.com/ultralytics/ult…

MyBatis 用法详解

文章目录 一、普通 SQL1.1 注解实现:1.1.1 参数传递:1.1.2 增(Insert):1.1.3 删(Delete):1.1.4 改(Update):1.1.5 查(Select&#xff…

大疆M2006+C610 pid参数调优

官方给的示例代码里给的是1.5, 0.1, 0 但试了下空转时显然不太行. 自己摸索出0.8, 0.03, 0 表现如图中的蓝色线 期望速度先两秒的1000,然后一秒的2000,一秒的3000, 0 2000 表现还不错,可以看到0.5秒后与期望值的差距控制在大概10%之内,但还是感觉有些过调 对了先说一下基础知识…

UnityComputeShader Challenge2

UnityComputeShader Challenge2 大部分内容与Challenge1中的一致,重复的地方不做说明 using UnityEngine; using System.Collections;public class Challenge2 : MonoBehaviour {public ComputeShader shader;//纹理的分辨率,正方形public int texReso…

PHP拼团接龙商城系统小程序源码

拼团接龙商城系统,解锁购物新乐趣! 🎉 拼团接龙,购物也能玩出新花样 你是否厌倦了单调的购物方式?想要尝试一种既有趣又实惠的购物新体验?那么,“拼团接龙商城系统”绝对是你的不二之选&#…

fluke双绞线测试-外部串扰AxTALK-测试DEMO样本

外部串扰是电缆束或跳线中相邻电缆之间传输的噪音或串扰。外部串扰是 10GBASE-T 通信应用中主要的噪音源。 电缆线对(NEXT 和 FEXT)之间的串扰信号与传输信号有关,所以网络设备可以利用数字信号处理 (DSP) 技术除去数据信号中的串扰信号。但…

力扣题11~20

题11(中等): 思路: 这种题目第一眼就是双循环,但是肯定不行滴,o(n^2)这种肯定超时,很难接受。 所以要另辟蹊径,我们先用俩指针(标志位)在最左端和最右端&am…

Android iOS 使用 ARMS 用户体验监控(RUM)的最佳实践

作者:元泊 引言 背景信息 随着移动互联网技术的持续演进与全民互联网时代的深入,用户在 Android、iOS 应用程序、小程序、H5 游戏及网页等多元化平台上的交互时长显著增长。这一趋势加剧了用户体验(UX)场景的复杂性&#xff0c…

谈到数据集成和数据分析,这三个概念你得分清楚!

谈及数据集成和数据分析相关的概念,总是会提到异构数据源、异构数据库和分布式数据库,他们所涉及到的方面略有不同,今天来详细说下它们之间的区别! 一、异构数据源 异构数据源是指不同类型、不同结构、不同格式的数据源。 在数据…

PyQt基本功能

简单的窗口 #!/usr/bin/python3 # -*- coding: utf-8 -*- import sys # 这⾥引⼊了PyQt5.QtWidgets模块,这个模块包含了基本的组件 from PyQt5.QtWidgets import QApplication, QWidgetif __name__ __main__:# 每个PyQt5应⽤都必须创建⼀个应⽤对象# sys.argv是⼀…

雷达图怎么绘制?!超简单,一次性告诉你Python和R绘制方法~~

今天给大家介绍的的图表为雷达图(Radar/Spider chart),这种类型图表在生活中较常使用,是一种以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多变量数据的图形方法。较常用的场景多为分析企业经营状况(收益性、生产性、流动性、安全性和成长性…