前程无忧sign字段js逆向

前程无忧sign字段js逆向

网页地址:网址
逆向时间:20241123
请求接口:
进入网址,打开开发者模式 ,清空网络 点击分页
在这里插入图片描述

观察状态,确定请求接口

在这里插入图片描述

点击启动器中对应的js代码位置

在这里插入图片描述

断点伺候

在这里插入图片描述

在页面中点击任意一个分页

在这里插入图片描述

浏览器停止在刚刚的断点处,查看右面面板的调用堆栈中的promisie.then 中的u.request,并点击

在这里插入图片描述

跳转到对应代码,继续断点伺候

在这里插入图片描述

此时,我们已经打了两个断点了,可以将刚刚那个取消掉,位置在右侧的上方断点里了

在这里插入图片描述

继续执行,将页面刷新完,再点击页面中任意一个分页,进入断点,可以观察到d对象有6个值,其中四个值是函数

在这里插入图片描述

我们先点击第一个函数进去看看,有没有sign加密的代码,没有的话就找第二个,点击右侧的黄色箭头指向第一个函数
观察发现,还真有,那就是他了,继续断点伺候,并且把刚刚的断点可以取消掉了

在这里插入图片描述
然后,再继续执行直到刷新完成,再点击任意分页
可以看的到,加密方式是hmacsha256算法,该算法有两个参数,把这些东西放在控制台看看是什么样子
我这里分别把整个方法,以及对应的参数放进去了:

在这里插入图片描述
然后我们用node模拟这个加密算法,看看生成的结果是否与该请求的sign对的上

const CryptoJS = require('crypto-js');

lll = "abfc8f9dcf8c3f3d8aa294ac5f2cf2cc7767e5592590f39c3f503271dd68562b"
aaa = "/api/job/search-pc?api_key=51job&timestamp=1732331153&keyword=python&searchType=2&function=&industry=&jobArea=000000&jobArea2=&landmark=&metro=&salary=&workYear=&degree=&companyType=&companySize=&jobType=&issueDate=&sortType=0&pageNum=1&requestId=0b4e02ee4c2f636ae13953dc21437c66&pageSize=20&source=1&accountId=211916692&pageCode=sou%7Csou%7Csoulb"
const hmac = CryptoJS.HmacSHA256(aaa, lll);

// 将结果转换为十六进制字符串
const hmacHex = hmac.toString(CryptoJS.enc.Hex);


console.log('HMAC-SHA256 加密后的数据:', hmacHex);

注意这里需要安装crypto-js包,可以问gpt,这里就不多说了
控制台执行输出结果

在这里插入图片描述
同时查看请求头中的sign是否对的上
在这里插入图片描述

验证过后是一样的
我的其他疑问:

  1. 请求地址中有个时间戳字段,我咋保证时间戳是相同的呢
  2. 如果加密算法中的key一直在变,应该怎么办呢?
  3. 如何发现以及确准请求中加密的其他字段呢?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值