00后老程序员不讲武德 偷袭 猿人学第二题解题记录 match/2

news2024/11/22 19:51:22

我是一个00后的老程序员,半夜00点有个Python群友发来一个题目,我以为是leetcode算法题呢,这不轻而易举、手到擒来、简简单单、有手就行,哪怕是博利叶排序我也能招架得住啊,结果发来一个链接。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
题发出来了,做这个题花了约2个小时半。

这是做完截的图
在这里插入图片描述

说说我的思路:
首先我刚看到页面,非常简陋。
在这里插入图片描述
看了看题目,让我拿1~5页的数据
在这里插入图片描述
打开检查元素,发现请求接口获取的数据,page1~5

发现需要cookie
在这里插入图片描述
发现cookie超时非常短
在这里插入图片描述
于是打开刷新页面看看后端如何返回的cookie,一般情况下都是Set-Cookie Header头,但是它没有。

有趣的是这个页面是加了防debug的,我直接用edge给他关了。

在这里插入图片描述
于是,我测试接口,发现提示cookie超时与后端有关,我以为是前端判断(因为cookie是前端生成的),那么,cookie肯定通过某种方式注册到了后端
在这里插入图片描述
发现有个loginInfo接口,我以为是cookie注册的接口,然后我尝试调用该接口,设置Header头的cookie为随意值,发现并不是,我设置的随意的cookie并不生效,不知道用来干嘛的。
在这里插入图片描述
ps:貌似请求列表的接口会延长cookie超时时间,但是仍然会超时(最大超时时间)而不请求列表,超时会更快。

此时我有点儿焦躁了,因为我需要通过对方的js获取cookie生成逻辑。

找到了jquery.cookie.mini.js我一看,这简单啊,老方法,先用edge本地替换该js,然后修改该js代码打印cookie出来看看,再说下一步。
使用本地副本替代网页资源 (“替代”选项卡)

ps:为什么说老方法,之前破解一个前端接口传参都加密的网站,那个网站调用了加密库,我直接替换加密库,把密码打印了出来。

在这里插入图片描述
但是我发现,设置cookie的代码没调用这个js文件。

此时我计划落空,非常焦躁。

然后,我还点击了4和5页,弹出一堆话,让我设置什么。没看懂。
在这里插入图片描述
ps:我找到了除jquery.cookie.mini.js之外的另一个可能携带cookie生成逻辑的js文件,但是那个js很长,这种题,实在是没有什么大兴趣逆向那么大的js。要是有个小姐姐奖励我或许可以考虑。
在这里插入图片描述
现在来看,也许逻辑就在html里的script标签,这也说不定。

我又想到了一个鬼点子,我写了个js,会获取cookie发送到一个服务。
在这里插入图片描述

const cookieValue = document.cookie;
const url = `http://127.0.0.1:5000/?data=${cookieValue}`;
fetch(url);

我python起了个服务,接收发来的cookie,然后请求5页,获得数据。

from flask import Flask, request
import requests

app = Flask(__name__)

@app.route('/', methods=['GET'])
def set_cookie():
    cookie = request.args.get('data')
    total_value = 0
    for page in range(1, 6):
        url = f'https://match.yuanrenxue.cn/api/match/2?page={page}'
        headers = {
            'cookie': cookie,
            'referer': 'https://match.yuanrenxue.cn/match/2',
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.36',
            'x-requested-with': 'XMLHttpRequest'
        }
        response = requests.get(url, headers=headers)
        print(response.json())
        data_list = response.json()['data']
        for item in data_list:
            total_value += item['value']
        print('第{page}页的总和为{total_value}'.format(page=page, total_value=total_value))
    print (total_value)
    return str(total_value)

if __name__ == '__main__':
    app.run(debug=True)

看上去成功了,就是不知道加出来的值对不对。
在这里插入图片描述

对不对问群友:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
看上去是对了

后记

正经爬虫,解密js比较好,这样能获取cookie计算方法

或者,python好像有那种库,把js放python里运行,不解密,稍微修改下让它输出cookie出来。

或者用我这种方法,想办法控制浏览器,python检测到cookie有问题,让浏览器刷新。

ps:比如,在js中轮询请求python,python发现cookie不能使用则返回一个值,js接收到值则刷新页面。

总之,依托答辩

cookie不可能前端计算,不安全

爬虫和盗号,爬虫是小事情

防止爬虫参考淘宝,搞一个人机验证码。
账户还得是JWTtoken

我记得淘宝发现是爬虫之后,它会返回重复的数据

其他顾虑

授人以鱼不如授人以渔,哪怕你通过我的文章实现了,拿到了最终的结果,都是一种进步,不要照抄答案,为此我已经涂掉答案的数字了。

哪怕你跑个代码,都是一种进步,我觉得我把思路发出来,也是为了更精进,你们可以锦上添花,没有人是万丈高楼平地起,一切只能靠自己的;都是站在巨人的肩膀上,继续前进。

总得来说这题没什么水平,不符合实际,实际应该解决的是人机验证码问题。

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

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

相关文章

GD32F10X ----RTC

1. RTC的简介 STM32 的实时时钟(RTC)是一个独立的定时器。STM32 的 RTC 模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。 RTC 模块和时钟配置…

BUUCTF-WEB-刷题记录

题目地址 https://buuoj.cn/challenges[HITCON 2017]SSRFme 代码理解 进入主页后发现是代码审计/ escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数— 抑制错误输出 mkdir — 创建目录 chdir 更改目录 shell_exec — 通过 shell 环境执行命令&#x…

第5章-宏观业务分析方法-5.3-主成分分析法

5.3.1 主成分分析简介 主成分分析是以最少的信息丢失为前提,将原有变量通过线性组合的方式综合成少数几个新变量;用新变量代替原有变量参与数据建模,这样可以大大减少分析过程中的计算工作量;主成分对新变量的选取不是对原有变量的简单取舍,而是原有变量重组后的结果,因此…

Spring注册Bean系列--方法1:@Component

原文网址:Spring注册Bean系列--方法1:Component_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Spring注册Bean的方法:Component。 注册Bean的方法我写了一个系列,见:Spring注册Bean(提供Bean)系列--方法大全_IT利刃出鞘…

C++代码示例:排列数简单生成工具

文章目录 前言代码仓库内容代码(有详细注释)编译和运行命令结果总结参考资料作者的话 前言 C代码示例:排列数简单生成工具。 代码仓库 yezhening/Programming-examples: 编程实例 (github.com)Programming-examples: 编程实例 (gitee.com) …

PHP 数码公司运营管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 数码公司运营管理系统系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 php 数码公司运营管理系统 代码 https://download.csdn.net/download/qq_41…

实战教程:如何在API监控中实现高效报警和通知

问题 因一业务需要,想要对API服务接口添加一些监控,以帮助跟踪应用程序的性能、问题和用户活动等。实现监控的方式有多种多样的方式,以下是一些常用的方法: 日志记录: 在应用程序中添加详细的日志记录,包括…

如何开发一个微信小程序

微信小程序是微信公众平台推出的一种全新的应用形态,它具有跨平台、小巧、高效等特点,深受用户喜爱。 一直想学习开发小程序,最近找了一个教程来看,发现原生小程序写起来还是挺简单的,主要分为以下几步。 准备开发环境…

SpringCloud Alibaba - Sentinel 限流规则(案例 + JMeter 测试分析)

目录 一、Sentinel 限流规则 1.1、簇点链路 1.2、流控模式 1.2.1、直接流控模式 1.2.2、关联流控模式 a)在 OrderController 中新建两个端点. b)在 Sentinel 控制台中对订单查询端点进行流控 c)使用 JMeter 进行测试 d)分…

C语言 Cortex-A7核 PWM实验

1 实验目的 驱动开发板蜂鸣器风扇、马达进行工作 2 代码 pwm.h #ifndef __PWM_H__ #define __PWM_H__ #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_ti…

网页一直跳转到国家反诈中心页面

很明显,我进入的是vscode的官方下载地址。 但是一直会出现反诈中心的拦截 我们需要在控制面板中,找到网络, 将Internet 协议版本 4 (TCP/IPv4)的属性改成 使用下面的DNS 服务地址(E):8.8.8.8 这样就可以正常访问相关的页面了

【day10.01】使用select实现服务器并发

用select实现服务器并发&#xff1a; linuxlinux:~/study/1001$ cat server.c #include <myhead.h>#define ERR_MSG(msg) do{\printf("%d\n",__LINE__);\perror(msg);\ }while(0)#define PORT 8880#define IP "192.168.31.38"int main(int argc, c…

动态规划算法(1)--矩阵连乘和凸多边形剖分

目录 一、动态数组 1、创建动态数组 2、添加元素 3、删除修改元素 4、访问元素 5、返回数组长度 6、for each遍历数组 二、输入多个数字 1、正则表达式 2、has.next()方法 三、矩阵连乘 1、什么是矩阵连乘&#xff1f; 2、动态规划思路 3、手推m和s矩阵 4、完…

Vue封装全局SVG组件

1.SVG图标配置 1.安装插件 npm install vite-plugin-svg-icons -D 2.Vite.config.ts中配置 import { createSvgIconsPlugin } from vite-plugin-svg-icons import path from path export default () > {return {plugins: [createSvgIconsPlugin({// Specify the icon fo…

cesium 热力图(CesiumHeatmap)

cesium 热力图 可添加、删除、显示、隐藏 完整代码 <!DOCTYPE html> <html lang="en"><head><meta charset="utf-8">

计算机毕设 大数据B站数据分析与可视化 - python 数据分析 大数据

文章目录 0 前言1 课题背景2 实现效果3 数据获取4 数据可视化5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自己做…

C++指针的使用

文章目录 1.C指针1.1 定义指针1.2 使用指针 2.空指针和野指针2.1 空指针2.2 野指针 3.指针所占空间4.使用const修饰指针4.1 const修饰指针4.2 const修饰常量4.3 const 既修饰指针也修饰常量 5.指针操作数组6.指针做函数参数7.使用指针知识实现冒泡排序 1.C指针 指针其实就是一…

基础数据结构之——【顺序表】(上)

从今天开始更新数据结构的相关内容。&#xff08;我更新博文的顺序一般是按照我当前的学习进度来安排&#xff0c;学到什么就更新什么&#xff08;简单来说就是我的学习笔记&#xff09;&#xff0c;所以不会对一个专栏一下子更新到底&#xff0c;哈哈哈哈哈哈哈&#xff01;&a…

掌动智能:替代JMeter的压力测试工具有哪些

JMeter是一个广泛使用的开源压力测试工具&#xff0c;但在实际应用中&#xff0c;也有一些其他优秀的替代品可供选择。本文将介绍几个可替代JMeter的压力测试工具&#xff0c;它们在功能、性能和易用性方面都具有独特优势&#xff0c;可以满足不同压力测试需求的选择。 一、Gat…

使用ExLlamaV2在消费级GPU上运行Llama2 70B

Llama 2模型中最大也是最好的模型有700亿个参数。一个fp16参数的大小为2字节。加载Llama 270b需要140 GB内存(700亿* 2字节)。 只要我们的内存够大&#xff0c;我们就可以在CPU上运行上运行Llama 2 70B。但是CPU的推理速度非常的慢&#xff0c;虽然能够运行&#xff0c;速度我…