前程无忧接口分析

前程无忧接口分析

  • 所需用到的工具
  • URL解析
  • 通过抓包软件或者开发者选项抓取数据包
  • 对代码中的参数解析分析
  • 对acw_sc__v2进行分析
  • 对acw_sc__v2进行转换代码生成
    • 生成outPutList数组
    • 生成arg2参数
    • 生成arg3参数
    • 最终的效果
  • 对详情页面的分析
    • 对timestamp__1258的生成分析

所需用到的工具

  • Charles抓包工具
  • https://curlconverter.com/python/

URL解析

先访问网页https://www.51job.com/
在这里插入图片描述输入关键字点击搜索
在这里插入图片描述通过查看这个网址
https://we.51job.com/pc/search?jobArea=260200&keyword=%E5%85%BC%E8%81%8C&searchType=2&sortType=0&metro=

有以下参数

参数名说明
jobArea260200城市代码
keyword兼职关键字(UrlEncode 编码)
sortType00代表综合排序
1代表最新优先
3代表薪资优先
5代表活跃职位优先

通过抓包软件或者开发者选项抓取数据包

在这里插入图片描述复制cURL Request通过https://curlconverter.com/go/转为Python代码
在这里插入图片描述

运行代码查看是否能获取成功

在这里插入图片描述

对代码中的参数解析分析

通过对代码中的参数分析,最终发现修改acw_sc__v2的值会导致访问失败

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

所以基本上确定acw_sc__v2为我们需要破解的

对acw_sc__v2进行分析

现在我们需要去网站对acw_sc__v2逆向分析
先检查一下acw_sc__v2,是本地生成的还是服务器生成
通过如下图可知它是由本地js文件生成的
在这里插入图片描述现在我们需要把这个值删除,并编写一个hook使其能够快速的定位

cookie_cache = document.cookie;
Object.defineProperty(document, "cookie", {get: function () {console.log(cookie_cache);// 在获取document.cookie时,执行你想要的操作return cookie_cache; // 返回原始的cookie值},set: function(value) {// 在设置document.cookie时,执行你想要的操作if(value.includes('acw_sc__v2')){debugger;}}
});

在这里插入图片描述最终定位如下图
在这里插入图片描述开始对栈分析,定位到上一栈
在这里插入图片描述通过查看我们可以知道arg3就是acw_sc__v2的值
在这里插入图片描述
在这里打上一个断点,并重新加载页面

在这里插入图片描述
搜寻arg3
在这里插入图片描述
通过阅读这份代码可知arg3是通过一个循环来生成的,但是循环的条件与arg2有关,arg2又与列表outPutList有关,outPutListarg1有关

所以基本的思路为通过arg1生成outPutListoutPutList生成arg2arg2生成arg3

搜寻arg1
在这里插入图片描述在这里打上断点,重新加载网页
在这里插入图片描述在这里插入图片描述通过如上两张图片可知arg1来自于访问一个URL所返回的body

通过抓包软件抓取并转为Python代码
在这里插入图片描述在这里插入图片描述我们可以通过正则表达式取出这个值

arg1=re.findall("arg1=('[^']*')",response.text)
arg1=arg1[0].replace("'","")

对acw_sc__v2进行转换代码生成

生成outPutList数组

通过arg1生成outPutList

for (var i = 0; i < arg1[_0x1e8e("0x1")]; i++) {var this_i = arg1[i];for (var j = 0; j < posList[_0x1e8e("0x1")]; j++) {if (posList[j] == i + 1) {outPutList[j] = this_i}}
}

分析这个js代码可知这是通过循环来生成的
arg1[_0x1e8e(“0x1”)]是arg1的长度
posList[_0x1e8e(“0x1”)]是posList数组的长度
posList数组是固定值
转为Python代码如下

arg1='6AA3E7F5214AEB580A31B0B254C4795589509422'
posList = [15, 35, 29, 24, 33, 16, 1, 38, 10, 9, 19, 31, 40, 27, 22, 23, 25, 13, 6, 11, 39, 18, 20, 8, 14, 21, 32, 26, 2, 30, 7, 4, 17, 5, 3, 28, 34, 37, 12, 36]
outPutList = []
for i in range(len(arg1)):outPutList.append(0)for i in range(len(arg1)):this_i = arg1[i]for j in range(len(posList)):if posList[j] == i + 1:outPutList[j] = this_iprint(outPutList)

生成arg2参数

经过对代码的分析可知arg2是由outPutList数组转为字符串实现的

arg2 = outPutList[_0x1e8e("0x2")]("");
arg2  = ''.join(outPutList)

生成arg3参数

for (var i = 0; i < arg2[_0x1e8e("0x1")] && i < mask[_0x1e8e("0x1")]; i += 2) {var GxjQsM = _0x1e8e("0x3")[_0x1e8e("0x4")]("|"), QoWazb = 0;while (!![]) {switch (GxjQsM[QoWazb++]) {case "0":if (xorChar[_0x1e8e("0x1")] == 1) {xorChar = "0" + xorChar}continue;case "1":var strChar = parseInt(arg2[_0x1e8e("0x5")](i, i + 2), 16);continue;case "2":arg3 += xorChar;continue;case "3":var xorChar = (strChar ^ maskChar)[_0x1e8e("0x6")](16);continue;case "4":var maskChar = parseInt(mask[_0x1e8e("0x5")](i, i + 2), 16);continue}break}
}

arg2[_0x1e8e(“0x1”)]是arg2的长度
mask[_0x1e8e(“0x1”)]是mask的长度
mask是固定值3000176000856006061501533003690027800375
GxjQsM是固定的列表[‘1’, ‘4’, ‘3’, ‘0’, ‘2’]

转为Python代码

arg3=''
for i in range(0, 40, 2):strChar = int(arg2[i:i + 2], 16)maskChar = int(mask[i:i + 2], 16)xorChar = hex(strChar ^ maskChar)[2:]if len(xorChar) == 1:xorChar = '0' + xorChararg3 += xorChar

最终的效果

在这里插入图片描述

对详情页面的分析

随便点击一个页面进入详情页面,抓包抓取数据
在这里插入图片描述复制CURL命令转为Python代码,运行代码
在这里插入图片描述可以获取数据
开始分析,最终发现只有修改reqtimestamp__1258才会获取失败,并且这两个是一对的,任何一个被修改都会导致获取失败

在这里插入图片描述

对timestamp__1258的生成分析

通过抓包软件发现在跳转页面之前会访问一个url获取js代码

在这里插入图片描述把整个js代码复制下来到浏览器去调试
在这里插入图片描述

在这里插入图片描述搜寻_0x3baf44
在这里插入图片描述搜寻_0x30f62c
在这里插入图片描述最中发现这个_0x56d97c是一个函数,提交的参数为下面这种结构

-1837977873|0|1702035443735
number|0|number
0之后的数字的为时间戳,第一个数字暂不知道,所以去搜寻

在这里插入图片描述大致阅读可知_0x318558通过for循环来生成的,其中与_0x1117c9有关
搜寻_0x1117c9

在这里插入图片描述打印_0x1117c9
在这里插入图片描述这里你会很熟悉,这些数据都是搜索接口里所抓取的数据
在这里插入图片描述也就是说timestamp__1258的生成思路为
构造如下的列表

{"protocol": "https:","host": "jobs.51job.com","hostname": "jobs.51job.com","port": "","pathname": "/guiyang-gshq/152094046.html","search": "?s=sou_sou_soulb&t=0_0&req=04608edfce87b123a2d4951514d63dc4","hash": "","original": "https://jobs.51job.com/guiyang-gshq/152094046.html?s=sou_sou_soulb&t=0_0&req=04608edfce87b123a2d4951514d63dc4"
}

通过for循环生成_0x318558,在通过_0x318558构造如下结构的数据

_0x318558|0|时间戳

提交到_0x56d97c函数生成timestamp__1258的值

_0x56d97c函数太过庞大并且这个js代码是混淆后的,最终选择补环境的方式来实现这个生成,让后通过Python调用js代码
补环境之后的效果
在这里插入图片描述在这里插入图片描述

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

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

相关文章

Ubuntu22.04安装完成后便可直接使用键盘上的Print键进行截图

概要&#xff1a;Ubuntu22.04安装完成后&#xff0c;无需安装什么截图软件&#xff0c;可以直接使用键盘上的Print键进行截图。 1、按一下Print键 我的电脑上Print键是PrtSc&#xff0c;如下图所示 2、框选区域并截图 如下图中&#xff0c;可以框选(Selection)&#xff0c;也…

【教学类-35-06】17号的学号字帖延伸出的全体字帖(1-9去0)(A4竖版1份)

作品展示 背景需求&#xff1a; 给大4班17号同学单独做了一个学号字帖后&#xff0c;我想可以把这样的学具用在中班&#xff08;我马上要成为中4班老师了&#xff09;&#xff0c;那就需要给全班做一份这样的大号学号贴。 使用17号同学的word模板&#xff08;见下文&#xff…

3dMax vs Cinema4d哪个更好更适合你?

Cinema 4d和3dMax的区别 用于游戏风格、开发和风格可视化的3D建模、动画和渲染软件系统&#xff0c;为用户提供制作和编辑动画、视觉效果和环境的灵活性。4D CINEMA可能是由MAXON构建的强大的3D建模、运动图形、绘画和动画软件系统。Cinema 4D将在每个Windows和MAC操作系统上运…

前端学习系列之CSS

目录 CSS 简介 发展史 优势 基本语法 引用方式 内部样式 行内样式 外部样式 选择器 id选择器 class选择器 标签选择器 子代选择器 后代选择器 相邻兄弟选择器 后续兄弟选择器 交集选择器 并集选择器 通配符选择器 伪类选择器 属性选择器 CSS基本属性 优…

JS如何实现竖屏轮播图

首先是HTML搭建结构 <div class"banner-box"><div class"bannerbox"><div class"banner"><a class"a-img-ban"> <img class"img-ban" src"./img/640 (4).jpg" alt"终于等到你还…

SpringBoot项目访问resources下的静态资源

1.新建一个配置文件夹&#xff0c;放配置类 2.编辑 WebMvcConfig.java package com.southwind.configuration;import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import or…

openlayers地图使用---跟随地图比例尺动态标绘大小的一种方式3

openlayers地图使用—跟随地图比例尺动态标绘大小的一种方式 预期&#xff1a;随着地图比例尺放大缩小&#xff0c;地图上的标绘随着变化尺寸 思路&#xff1a;通过VectorImage和动态修改Feature尺寸实现Feature跟随地图比例尺尺寸变化 优点&#xff1a;结合第1和第2种方式的…

openlayers地图使用---跟随地图比例尺动态标绘大小的一种方式2

openlayers地图使用—跟随地图比例尺动态标绘大小的一种方式2 预期&#xff1a;随着地图比例尺放大缩小&#xff0c;地图上的标绘随着变化尺寸 思路&#xff1a;通过不断添加地图图层实现标绘的动态缩放 优点&#xff1a;标绘放大缩小非常流畅 缺点&#xff1a;标绘超过1000…

LangChain 22 LangServe用于一键部署LangChain应用程序

LangChain系列文章 LangChain 实现给动物取名字&#xff0c;LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储&#xff0c;读取YouTube的视频文本搜索I…

3DCAT+上汽奥迪:打造新零售汽车配置器实时云渲染解决方案

在 5G、云计算等技术飞速发展的加持下&#xff0c;云渲染技术迎来了突飞猛进的发展。在这样的背景下&#xff0c;3DCAT应运而生&#xff0c;成为了业内知名的实时云渲染服务商之一。 交互式3D实时云看车作为云渲染技术的一种使用场景&#xff0c;也逐步成为一种新的看车方式&a…

设备温度和振动综合监测:温振一体式传感器的优点和应用

随着工业设备的复杂性和自动化程度的提高&#xff0c;对设备状态监测的需求也日益增加。温振一体式传感器作为一种集振动和温度监测于一体的传感器&#xff0c;具备多项优势&#xff0c;因此在工业设备状态监测领域得到广泛应用。 温振一体式传感器基于振动传感器和温度传感器的…

网络运维与网络安全 学习笔记2023.12.1

网络运维与网络安全 学习笔记 第三十二天 今日目标 ACL原理与类型、基本ACL配置、高级ACL配置 高级ACL之ICMP、高级ACL之telnet ACL原理与类型 项目背景 为了企业的业务安全&#xff0c;要求不同部门对服务器有不同的权限 PC1不能访问Server PC2允许访问Server 允许其他所…

043:vue项目一直出现 sockjs-node/info?t=XX的解决办法

第043个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

Linux文件系统与基础IO

文章目录 1 C文件接口1.1 fopen1.2 fwrite、fread、rewind、fclose 2 文件系统调用2.1 open2.1.1 参数2&#xff1a;flags2.1.2 参数3&#xff1a;mode2.1.3 返回值——file descriptor 2.2 write2.3 read2.4 close 3 文件的本质3.1 struct file3.2 一个进程如何与多个文件相关…

Python 日志指南

目录 日志指南 日志基础教程 什么时候使用日志 一个简单的例子 记录日志到文件 从多个模块记录日志 记录变量数据 更改显示消息的格式 在消息中显示日期/时间 后续步骤 进阶日志教程 记录流程 记录器 处理器 格式器 配置日志记录 如果没有提供配置会发生什么 …

QLoRA论文概述

QLORA: Efficient Finetuning of Quantized LLMs QLoRA论文概述前言&#xff08;省流版本&#xff09;摘要论文十问实验实验1数据集和模型实验结论 实验2数据集和模型实验结论 局限性模型尺度数据集其他微调方法 QLoRA论文概述 前言&#xff08;省流版本&#xff09; 微调需要…

期末速成数据库极简版【查询】(2)

目录 select数据查询----表 【1】筛选列 【2】where简单查询 【3】top-n/distinct/排序的查询 【4】常用内置函数 常用日期函数 常用的字符串函数 【5】模糊查询 【6】表数据操作——增/删/改 插入 更新 删除 【7】数据汇总 聚合 分类 ​ &#x1f642;&#…

分享十几个适合新手练习的软件测试项目

说实话&#xff0c;在找项目的过程中&#xff0c;我下载过&#xff08;甚至付费下载过&#xff09;N多个项目、联系过很多项目的作者&#xff0c;但是绝大部分项目&#xff0c;在我看来&#xff0c;并不适合你拿来练习&#xff0c;它们或多或少都存在着“问题”&#xff0c;比如…

12v转48v升压电源芯片:参数、特点及应用领域

12v转48v升压电源芯片&#xff1a;参数、特点及应用领域 随着电子设备的日益普及&#xff0c;电源芯片的需求也在不断增长。今天我们将介绍一款具有广泛应用前景的升压电源芯片——12v转48v升压电源芯片。该芯片具有宽输入电压范围、高效率、固定工作频率等特点&#xff0c;适…

mp3的播放

1.这段vue代码会播放声音&#xff0c;但是会有audio标签 <template><div><audio id"myAudio" controls><source src"./test.mp3" type"audio/mp3" />Your browser does not support the audio tag.</audio></…