猿人学第三题 罗生门

思路

使用开发者工具进行抓包,验证数据请求的方式是什么,这里推荐大家使用浏览器自带的工具。

我们发现每次的翻页请求都会有一个jssm请求,这里我们先记录一下这个情况,现在观察一下cookie是否有变化。

 

 

这个实际上没有发生变化。参数也没有加密,所以直接调试一下源码,这边由于是ajax所以直接xhr分析一下。

 提取这个request中的代吗看一下

window.url='/api/match/3';
request = function() {var list = {"page": window.page,};$.ajax({url: window.url,dataType: "json",async: false,data: list,type: "GET",beforeSend: function(request) {(function() {var httpRequest = new XMLHttpRequest();var url = '/jssm';httpRequest.open('POST', url, false);httpRequest.send()})()},success: function(data) {let name = ['梦琪', '忆柳', '之桃', 'bai慕青', '问兰', 'du尔岚', '元香', '初夏', '沛菡', '傲珊zhi', '曼文', '乐菱', 'dao痴珊', '恨玉', '惜文', '香寒', '新柔', '语蓉', '海安', '夜蓉', '涵柏', '水桃', '醉蓝', '春儿', '语琴', '从彤', '傲晴', '语兰', '又菱', '碧彤', '元霜', '怜梦', '紫寒', '妙彤', '曼易', '南莲', '紫翠', '雨寒', '易烟', '如萱', '若南', '寻真', '晓亦', '向珊', '慕灵', '以蕊', '寻雁', '映易', '雪柳', '孤岚', '笑霜', '海云', '凝天', '沛珊', '寒云', '冰旋', '宛儿', '绿真', '盼儿', '晓霜', '碧凡', '夏菡', '曼香', '若烟', '半梦', '雅绿', '冰蓝', '灵槐', '平安', '书翠', '翠风', '香巧', '代云', '梦曼', '幼翠', '友巧', '听寒', '梦柏', '醉易', '访旋', '亦玉', '凌萱', '访卉', '怀亦', '笑蓝', '春翠', '靖柏', '夜蕾', '冰夏', '梦松', '书雪', '乐枫', '念薇', '靖雁', '寻春', '恨山', '从寒', '忆香', '觅波', '静曼', '凡旋', '以亦', '念露', '芷蕾', '千兰', '新波', '代真', '新蕾', '雁玉', '冷卉', '紫山', '千琴', '恨天', '傲芙', '盼山', '怀蝶', '冰兰', '山柏', '翠萱', '恨松', '问旋', '从南', '白易', '问筠', '如霜', '半芹', '丹珍', '冰彤', '亦寒', '寒雁', '怜云', '寻文', '乐丹', '翠柔', '谷山', '之瑶', '冰露', '尔珍', '谷雪', '乐萱', '涵菡', '海莲', '傲蕾', '青槐', '冬儿', '易梦', '惜雪', '宛海', '之柔', '夏青', '亦瑶', '妙菡', '春竹', '痴梦', '紫蓝', '晓巧', '幻柏', '元风', '冰枫', '访蕊', '南春', '芷蕊', '凡蕾', '凡柔', '安蕾', '天荷', '含玉', '书兰', '雅琴', '书瑶', '春雁', '从安', '夏槐', '念芹', '怀萍代曼', '幻珊', '谷丝', '秋翠', '白晴', '海露', '代荷', '含玉', '书蕾', '听白', '访琴', '灵雁', '秋春', '雪青', '乐瑶', '含烟', '涵双', '平蝶', '雅蕊', '傲之', '灵薇', '绿春', '含蕾', '从梦', '从蓉', '初丹。听兰', '听蓉', '语芙', '夏彤', '凌瑶', '忆翠', '幻灵', '怜菡', '紫南', '依珊', '妙竹', '访烟', '怜蕾', '映寒', '友绿', '冰萍', '惜霜', '凌香', '芷蕾', '雁卉', '迎梦', '元柏', '代萱', '紫真', '千青', '凌寒', '紫安', '寒安', '怀蕊', '秋荷', '涵雁', '以山', '凡梅', '盼曼', '翠彤', '谷冬', '新巧', '冷安', '千萍', '冰烟', '雅阳', '友绿', '南松', '诗云', '飞风', '寄灵', '书芹', '幼蓉', '以蓝', '笑寒', '忆寒', '秋烟', '芷巧', '水香', '映之', '醉波', '幻莲', '夜山', '芷卉', '向彤', '小玉', '幼南', '凡梦', '尔曼', '念波', '迎松', '青寒', '笑天', '涵蕾', '碧菡', '映秋', '盼烟', '忆山', '以寒', '寒香', '小凡', '代亦', '梦露', '映波', '友蕊', '寄凡', '怜蕾', '雁枫', '水绿', '曼荷', '笑珊', '寒珊', '谷南', '慕儿', '夏岚', '友儿', '小萱', '紫青', '妙菱', '冬寒', '曼柔', '语蝶', '青筠', '夜安', '觅海', '问安', '晓槐', '雅山', '访云', '翠容', '寒凡', '晓绿', '以菱', '冬云', '含玉', '访枫'];let com_name = ['元优', '多乾', '巨久', '德祥', '洪仁', '乾富', '隆安', '鑫德', '乾广', '伟复', '耀顺', '同福', '东昌', '洪亚', '盛欣', '元优', '耀佳', '昌益', '欣丰', '乾美', '春信', '贵丰', '东弘', '同富', '飞庆', '万鼎', '隆高', '久协', '德高', '正禄', '如福', '圣耀', '洪昇', '合寿', '宏禄', '如通', '公盈', '春谦', '皇贵', '伟荣', '猿人学', '破釜成', '寒冰射手', '冰冰凉', '凉冰冰', '元优', '多乾', '巨久', '德祥', '洪仁', '乾富', '隆安', '鑫德', '乾广', '伟复', '耀顺', '同福', '东昌', '洪亚', '盛欣', '元优', '耀佳', '昌益', '欣丰', '乾美', '春信', '贵丰', '东弘', '同富', '飞庆', '万鼎', '隆高', '久协', '德高', '正禄', '如福', '圣耀', '洪昇', '合寿', '宏禄', '如通', '公盈', '春谦', '皇贵', '伟荣', '猿人学', '破釜成', '寒冰射手', '冰冰凉', '凉冰冰'];data = data.data;let html = `<table class="table"><tr><th>申请/注册号</th><th>申请日期</th><th>商标申请人</th><th>申请公司名</th></tr>`;let a = `<tr><td class="lwtd0">3472509</td><td class="lwtd0">~申请~</td><td class="lwtd0">马梦启</td><td class="lwtd0">东莞市协和粘胶有限公司</td></tr>`;if (window.page) {} else {window.page = 1}let op = 1;$.each(data, function(index, val) {let dat_year = 2000 + window.page;let dat_mou = window.page * 2;let dat_day = window.page * 5 + op;let dat_result = dat_year + '年' + dat_mou + '月' + dat_day + '日';let b = a.replace('3472509', val.value).replace('~申请~', dat_result).replace('马梦启', name[op * window.page]).replace('东莞市协和粘胶有限公司', com_name[op * window.page] + '科技发展公司');html += b;op += 1});$('.buwyqrs').text('').append(html + '</table>')},complete: function() {},error: function() {alert('数据加载失败,您的网络环境可能不太支持这道题目。请您关闭所有抓包工具后重试。如果还不行请加群反馈问题。您可以在此期间可进行其他题目的尝试');alert('您可以扫描二维码加入交流群反馈问题。相遇只为更好~,期待与您的见面');$('.page-message').eq(0).addClass('active');$('.page-message').removeClass('active');window.location.href = "http://match.yuanrenxue.com/list";}})
}
;
request()

 我们发现,这段代码中httpRequest.send()之前会先请求一次/jssm,这就是为什么我们每次翻页会出现一个jssm。那么,我们试一下不请求jssm的时候会返回什么?

返回的是这段js代码,我们直接复制在控制台打开看一下这个是什么

 

当你多试几次,或者直接子在eval中输出一下返回值你会发现这是一个无限debugger的过程,并且这段信息对我们这个问题是没有帮助的,所以这里我们可以知道,这是我们请求参数出现问题导致的结果。我们对比一下

import requestsurl = "https://match.yuanrenxue.cn/api/match/3?page=2"# 直接请求看一下返回的表头print(requests.get(url).headers)

我们发现返回的表头是这个和上面请求成功的表头对比,少了session-id

 

那么问题这个表头的添加过程应该是请求jssm的过程中加入的。所以请求jssm观察返回

 没有返回session-id,这里我们试着加一些cookie

这边有一个细节问题,使用request的时候并不能成功获取道请求,使用session的话确实可以的,原因就是request中会自己进行排序请求头,打乱了原先的。

import requestssession = requests.session()session.headers = {'Host': 'match.yuanrenxue.cn','Connection': 'keep-alive','Content-Length': '0','sec-ch-ua': '"Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"','sec-ch-ua-mobile': '?0','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36','sec-ch-ua-platform': '"Windows"','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','Accept-Language': 'zh-CN,zh;q=0.9','cookie': 'Hm_lvt_9bcbda9cbf86757998a2339a0437208e=1680872730; Hm_lvt_c99546cf032aaa5a679230de9a95c7db=1680872730; tk=-5150129943585824243; sessionid=oq9hvhsahjlotanjvu9mxha0fakbierb; Hm_lpvt_9bcbda9cbf86757998a2339a0437208e=1680873632; Hm_lpvt_c99546cf032aaa5a679230de9a95c7db=1680874330',
}
print(session.post('https://match.yuanrenxue.cn/jssm').headers)

 

出现这个之后我们在进行请求数据,发现是可以成功的,所以直接循环即可,只要每次请求翻页的时候先请求依次jssm就行

import requests
session = requests.session()
session.headers = {'Content-Length': '0','Accept': '*/*','Referer': 'https://match.yuanrenxue.cn/match/3','Accept-Encoding': 'gzip, deflate, br','Accept-Language': 'zh-CN,zh;q=0.9','Cookie': 'sessionid=oq9hvhsahjlotanjvu9mxha0fakbierb',
}for i in range(1, 6):url = f"https://match.yuanrenxue.com/api/match/3?page={i}"session.post('https://match.yuanrenxue.cn/jssm')print(session.get(url).text)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最长连续序列(leetcode 128)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路方法一&#xff1a;排序方法二&#xff1a;哈希表 5.实现示例参考文献 1.问题描述 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你…

见微知著-从底层代码一撇Qt的控件绘图

Qt 是目前C语言首选的框架库。之所以称为框架库而不单单是GUI库&#xff0c;是因为Qt提供了远远超过GUI的功能封装&#xff0c;即使不使用GUI的后台服务&#xff0c;也可以用Qt大大提高跨平台的能力。 仅就界面来说&#xff0c;Qt 保持各个平台绘图等效果的统一&#xff0c;并…

不想写大量 if 判断?试试用规则执行器优化,就很丝滑!

近日在公司领到一个小需求&#xff0c;需要对之前已有的试用用户申请规则进行拓展。我们的场景大概如下所示: if (是否海外用户) {return false; }if (刷单用户) {return false; }if (未付费用户 && 不再服务时段) {return false }if (转介绍用户 || 付费用户 || 内推…

Terminator的layout设置(一个新的一键启动思路)

首先你得有terminator&#xff1a; sudo apt install terminator然后就能使用了&#xff0c;我一般喜欢修改它原本的水平和垂直分割&#xff1a;用ctrlshifta和ctrlshifts 把屏幕先分成多块&#xff1a; 比如是这样的&#xff0c;接下来 右键->点击Preference 弹框中上方标…

LVGL | Demo实例使用说明

LVGL | Demo实例使用说明 时间&#xff1a;2023年12月10日21:51:17 文章目录 LVGL | Demo实例使用说明Demos for LVGLAdd the examples to your projectsDemosWidgetsMusic playerKeypad and encoderBenchmarkStress Contributing Demos for LVGL Add the examples to your p…

[山东大学操作系统课程设计]实验四+实验五

0.写在前面&#xff1a; 为什么这次把两个实验放在一起写了&#xff0c;因为实验五的要求就是在实验四的基础上完成实现的。但是我得实现说明&#xff0c;我的实验四虽然完成了要求&#xff0c;但是无法在我自己的实验四的基础上完成实验五&#xff0c;这是一个很大的问题&…

盘点251个Python源码Python爱好者不容错过

盘点251个Python源码Python爱好者不容错过 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 项目名称 链接&#xff1a;https://pan.baidu.com/s/1PikCn61NfHXmEzQiny8kfw?pwd6666 提取码&#xff1a;6666 dailyfreshpython-Dj…

P1317 低洼地题解

题目 一组数&#xff0c;分别表示地平线的高度变化。高度值为整数&#xff0c;相邻高度用直线连接。找出并统计有多少个可能积水的低洼地&#xff1f; 如图&#xff1a;地高变化为 [0,1,0,2,1,2,0,0,2,0]。 输入输出格式 输入格式 两行&#xff0c;第一行n, 表示有n个数。第…

在Spring Cloud使用Hystrix核心组件,并注册到Eureka注册中心去

其实吧&#xff0c;写Spring Cloud系列&#xff0c;我有时候觉得也挺难受的&#xff0c;因为Spring Cloud的微服务启动都需要一个一个来&#xff0c;并且在IDea中也需要占用比较大的内存&#xff0c;并且我本来可以一篇写完5大核心组件的&#xff0c;但是我却分了三篇&#xff…

Vue 静态渲染 v-pre

v-pre 指令&#xff1a;用于阻止 Vue 解析这个标签&#xff0c;直接渲染到页面中。 语法格式&#xff1a; <div v-pre> {{ 数据 }} </div> 基础使用&#xff1a; <template><h3>静态渲染 v-pre</h3><p v-pre>静态渲染&#xff1a;{{ n…

【Spring】SpringBoot日志

SpringBoot日志 日志概述日志使用打印日志获取日志对象使用日志对象打印日志日志框架介绍门面模式SLF4J框架介绍(simple logging facade for java) 日志格式说明日志级别日志级别的分类日志级别的使用 日志配置配置日志级别日志持久化配置日志文件的路径和文件名配置日志文件的…

编译Android14 AOSP原生代码并运行X86模拟器镜像过程记录

最近在研究Android Entreprise部分的特性&#xff0c;需要在Android手机上分析WorkProfile相关的源码&#xff0c;因为新买的Pixel样机还未到货&#xff0c;看了几天Android源码&#xff0c;迫切需要上真机对比分析。 又听说最近几年Android模拟器已经有些进步&#xff0c;至少…