尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
猿人学入门级cookies(第十三题)
开头碎碎念上一篇写文还是两年多以前了工作浑浑噩噩摆了两年最近朋友在找工作工作空闲之余我也看了一下猿人学的题正好验证一下工作两年的成果我从简单的开始做起没想到啊一开始就给我卡住了下面开始讲一下我的做题过程吧题目解题思路看起来是不是特别简单实际上也是特别简单但是我就是卡了好一会。首先打开开发者工具点击第二页后可以看到这次点击发出了两次请求如下图我们点击第一个请求可以看到返回了一串js如下图把这段js拿去执行会得到yuanrenxue_cookie1792046210|7BNT28COtfBiBhDQFX4plSYMLyw2jFUTMABk80wR5UJ1vgif0C49X4ru3wTaJaXcI4ddbBycIiEvTFFzRPZiku2dKjTt2b5zWqqZiPyVaROW2q4lClJoHmh4QJHYZKI8rNVr4KrGTuBcZRPLi;path/这很明显就是cookie内的一个值。果然点击第二个请求就可以看到这次请求的cookie里面就有这个值于是我们再点击第三页可以看到还是发起了两次请求第三页的第一次请求得到cookie里面的cookie值和我们第二页的第一次请求返回的js执行得到的cookie值是一致的这里是个坑所以思路也就很明确了把前一页第一次请求得到的cookie用在后续请求数据和下一页得到cookie的请求中然后重复五次拿到所有数字求和即可解题。敲代码过程这里是得到cookie值并处理然后调用js环境来得到后续请求用来的cookie值response_cookies requests.get(https://match.yuanrenxue.cn/api2/13, headersheaders) print(response_cookies.text) final_cookie response_cookies.text[len(document.cookie):].rstrip(;) ctx execjs.compile(function get_cookie() { return %s; } % final_cookie) cookie_value ctx.call(get_cookie)然后我们把这次请求得到的值拿到后续请求中params { page: 1, pageSize: 10, kw: } response session.get(https://match.yuanrenxue.cn/api/question/13, paramsparams, cookiescookies, headersheaders) data_list response.json()[data]然后我就发现一直响应400请求没有通过给的提示是token failed我就一直以为是我上面处理js部分处理的不对死磕了好久。然后我突然灵光乍现是不是两次请求要用一个request之后我就用session来请求cookie之后再请求数据发现通过了。最后也很轻松得到了五页数字求和的结果。但是得到的求和结果始终不对我自己手动翻页计算发现确实对不上而且是每一页的数据都对不上。经过长时间的思考后我又猛地发现我的第一次请求是没有带cookie的因为之前的思路是把前一页第一次请求得到的cookie用在后续请求数据和下一页得到cookie的请求中所以我就想当然地以为在第一页的第一次请求中不用带cookie后续四页带上就行。最后在这里把cookie加上后再次运行代码得到的结果就正确了经过测试cookie内只带sessionid就可以通过验证。我还测试了不用session来请求两次分别request也是能得到最终结果的这里我就只给用了session的代码。完整代码import requests import time import execjs session requests.Session() cookies { Hm_lvt_434c501fe98c1a8ec74b813751d4e3e3: 1788832813, sessionid: 带上你的sessionid, Hm_lvt_f80b2b389f44bbfb3bfe1704817d44e0: 1790730910,1791431799,1791949822, HMACCOUNT: 30D74844B380FA1E, Hm_lpvt_f80b2b389f44bbfb3bfe1704817d44e0: 1792033114 } headers { accept: application/json, text/javascript, */*; q0.01, accept-language: zh-CN,zh;q0.9,en-US;q0.8,en;q0.7,ja;q0.6, priority: u1, i, referer: https://match.yuanrenxue.cn/match/13, sec-ch-ua: Chromium;v154, Google Chrome;v154, Not A(Brand;v99, sec-ch-ua-mobile: ?0, sec-ch-ua-platform: Windows, sec-fetch-dest: empty, sec-fetch-mode: cors, sec-fetch-site: same-origin, user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36, x-requested-with: XMLHttpRequest } def get_cookie(): response_cookies session.get(https://match.yuanrenxue.cn/api2/13, headersheaders, cookiescookies) clean_cookie response_cookies.text[len(document.cookie):].rstrip(;) ctx execjs.compile(function get_cookie() { return %s; } % clean_cookie ) cookie_value ctx.call(get_cookie) return cookie_value count 0 for i in range(1, 6): cookies[yuanrenxue_cookie] get_cookie().replace(;path/, ).replace(yuanrenxue_cookie, ) session.cookies.set(yuanrenxue_cookie, cookies[yuanrenxue_cookie]) params { page: str(i), pageSize: 10, kw: } if i 5: headers[user-agent] yuanrenxue session.headers.update(headers) response session.get(https://match.yuanrenxue.cn/api/question/13, paramsparams, cookiescookies, headersheaders) data_list response.json()[data] count sum([item for item in data_list]) time.sleep(1) print(count)结语看来我的基础还是不太牢靠确实在我工作中很少用到session来请求学习之路任重而道远啊
RELATED

相关推荐

从预处理到链接:C语言源码如何一步步变成可执行文件

从预处理到链接:C语言源码如何一步步变成可执行文件

写在前边:这是我个人在梳理C语言编译链接全过程时的一篇完整笔记。学完语法之后,很多人对“程序到底是怎么跑起来的”仍然是一团迷雾,尤其是一碰到预处理指令、多文件编译、链接报错就发怵。这篇内容围绕“程序的编译(预处理操作&…

📅 2026/10/17 16:04:59
XYHCMS v3.5 建站指南:环境搭建、模板开发与安全避坑

XYHCMS v3.5 建站指南:环境搭建、模板开发与安全避坑

简介:XYHCMS网站管理系统 v3.5 bulid0518 是一款面向个人博客、企业建站及个性化网站场景的开源内容管理系统,适合具备一定 PHP 基础的开发者与站长使用,用于快速搭建并二次定制站点。系统基于 PHP 与 MySQL 构建,采用 MVC 分层设…

📅 2026/10/17 16:04:59
HoRain云--JDBC 事务与批量写入:先保证一致性,再谈吞吐

HoRain云--JDBC 事务与批量写入:先保证一致性,再谈吞吐

JDBC 事务与批量写入:先保证一致性,再谈吞吐 适用版本:Java 21;数据库驱动通过 JDBC 接口接入。SQL 的冲突语法和批处理细节因数据库与驱动而异。 订单导入是典型案例:一条订单需要写入主表和若干明细,可…

📅 2026/10/17 16:04:59
MORE NEWS

更多资讯

📰

Java课程设计必备:森林冰火人单人版Swing小游戏源码解析

简介:一份基于Java开发的森林冰火人单人版小游戏完整源码包,面向Java初学者、游戏开发爱好者及课程设计学生,可用于学习Swing/JavaFX界面搭建、键盘事件处理、游戏循环、重力跳跃与碰撞检测等基础机制。压缩包共78个文件,其中含6个…

📰

AI论文写作工具怎么用?专科生从开题到定稿的完整指南

又到一年毕业季,后台私信里被问到最多的问题就是“论文到底怎么写”。尤其是专科的同学,一边要实习一边要备考,留给论文的时间本来就不多,再加上过去确实没系统练过学术写作,一听到“开题报告”“文献综述”“参考文献…

📰

环与域的特征:代数结构的底层周期律

1. 这不是抽象符号游戏:环与域的“特征”到底在度量什么?你翻开一本近世代数教材,翻到“环的特征”这一节,看到定义:“设 $ R $ 是一个含幺环,若存在正整数 $ n $,使得 $ n \cdot 1_R 0_R $&am…

📰

C#版微信模拟框架解析:扫码登录、心跳与消息收发完整实现

简介:这是一份使用 C# 开发、已完成扫码登录核心流程的微信桌面版客户端框架,适合具备 C# 基础并希望深入理解网络通信、桌面 UI 与微信开放接口对接的开发者学习。整个工程共 321 个文件,压缩包约 19.81MB;源码以 94 个 cs 文件为…

📰

Kali Linux下Firefox ESR中文语言包安装与排查指南

很多刚把Kali装完、兴冲冲打开Firefox的用户,第一件事大概都是想让浏览器显示中文。结果在偏好设置里翻来翻去,语言列表里明明有Chinese,选上、保存、重启,界面纹丝不动还是英文。这不是你操作不对,而是Kali自带的Fire…

📰

从一到无穷大 #99:连接即服务:业务与基础设施的距离

前段时间看到 WorkBuddy 接入 CloudBase 的案例:用户描述需求,WorkBuddy 生成应用,CloudBase 承接这些应用的数据库、账号、文件和部署。[1] 这个分工让我想起大约五个月前考虑过的一个问题,只是当时更加模糊。 很多自研业务对存…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬