news 2026/9/3 3:49:02

013-webpack:新东方

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
013-webpack:新东方

网站地址:新东方

找加密参数+定位

只需要逆向sign即可:

我们直接xhr断点:

打上断点看看怎么个事儿:

然后我们看看ot是啥:

直接看sign生成的位置发现t竟然是刚才那个对象转化成的字符串,后面那个Ye.b是一个固定字符串,就差Je函数了,可以进去扣函数,但是进去一看就是webpack的模块存储文件,扣着可能会麻烦:

所以我另辟蹊径,找到了调用加载器的地方:

进去看看结构:

这种直接全扣就行,然后填充模块

复现逻辑

经过上面分析可得到代码如下:

var sz !function(e){function r(r){for(var n,a,i=r[0],c=r[1],l=r[2],p=0,s=[];p<i.length;p++)a=i[p],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&s.push(o[a][0]),o[a]=0;for(ninc)Object.prototype.hasOwnProperty.call(c,n)&&(e[n]=c[n]);for(f&&f(r);s.length;)s.shift()();returnu.push.apply(u,l||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++){var c=t[i];0!==o[c]&&(n=!1)}n&&(u.splice(r--,1),e=a(a.s=t[0]))}returne}var n={},o={0:0},u=[];function a(r){if(n[r])returnn[r].exports;var t=n[r]={i:r,l:!1,exports:{}},o=!0;try{console.log('chunk:',r)e[r].call(t.exports,t,t.exports,a),o=!1}finally{o&&delete n[r]}returnt.l=!0,t.exports}a.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=o[e]=[r,n]}));r.push(t[2]=n);var u,i=document.createElement("script");i.charset="utf-8",i.timeout=120,a.nc&&i.setAttribute("nonce",a.nc),i.src=function(e){returna.p+"static/chunks/"+({}[e]||e)+"."+{10:"47c029199ae9bfb21463",14:"17a52b04003ad29fee67"}[e]+".js"}(e);var c=new Error;u=function(r){i.onerror=i.onload=null,clearTimeout(l);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),u=r&&r.target&&r.target.src;c.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",c.name="ChunkLoadError",c.type=n,c.request=u,t[1](c)}o[e]=void0}};var l=setTimeout((function(){u({type:"timeout",target:i})}),12e4);i.onerror=i.onload=u,document.head.appendChild(i)}returnPromise.all(r)},a.m=e,a.c=n,a.d=function(e,r,t){a.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},a.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,r){if(1&r&&(e=a(e)),8&r)returne;if(4&r&&"object"===typeof e&&e&&e.__esModule)returne;var t=Object.create(null);if(a.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var nine)a.d(t,n,function(r){returne[r]}.bind(null,n));returnt},a.n=function(e){var r=e&&e.__esModule ? function(){returne.default}:function(){returne};returna.d(r,"a",r),r},a.o=function(e,r){returnObject.prototype.hasOwnProperty.call(e,r)},a.p="",a.oe=function(e){throw console.error(e),e};sz=a//var i=window.webpackJsonp_N_E=window.webpackJsonp_N_E||[]//,c=i.push.bind(i);//i.push=r,//i=i.slice();//for(var l=0;l<i.length;l++)//r(i[l]);//var f=c;//t()}([]);var Je=sz("aCH8"),data=`appId=5053&t=1766065342563&cityCode=430300&pageIndex=${1}&pageSize=12&categoryCode=123&order=0` Je("".concat(data).concat("750F82C2-D8F6-49F6-878C-1E7EBEBC8DA2"))

然后开始补模块了,所有模块如下:

result(这里面有一点改动,时间戳写活了,上面忘记了哈哈):

py调用

py代码:

importrequestsimportosimportexecjsimporttimeclassJSExecutor:def__init__(self,file_path):ifnotos.path.exists(file_path):print('NotFoundFile')withopen(file_path,'r',encoding='utf-8')asf:self.js_code=f.read()self.js_code=execjs.compile(self.js_code)defcall(self,func_name,*args):returnself.js_code.call(func_name,*args)defget_data(sign,timestamp,para_page):headers={'sign':sign,# 逆向此参数'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0',}params={'appId':'5053','t':f'{timestamp}','cityCode':'430300','pageIndex':f'{para_page}','pageSize':'12','categoryCode':'123','order':'0',}response=requests.get('https://dsapi.xdf.cn/product/v2/class/search',params=params,headers=headers)returnresponse.json()if__name__=='__main__':js_executor=JSExecutor('13.js')forpageinrange(1,4):js_params=js_executor.call('encSign',page)print(get_data(js_params['sign'],js_params['timeSign'],page))time.sleep(0.3)

result:

小结

本文很简单,如有问题请及时提出,加油加油

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 22:33:43

奇偶校验在异步通信中的应用:通俗解释核心要点

奇偶校验为何仍是串口通信的“第一道防线”&#xff1f;一文讲透它的实战价值你有没有遇到过这种情况&#xff1a;传感器明明工作正常&#xff0c;主控却频繁报错&#xff1b;或者设备在强电干扰环境下数据跳变&#xff0c;系统误动作不断&#xff1f;很多时候&#xff0c;问题…

作者头像 李华
网站建设 2026/9/3 4:04:34

快速理解ARM处理器复位后执行的第一条指令

从第一条指令开始&#xff1a;深入理解ARM处理器的复位启动机制 你有没有想过&#xff0c;当一块基于ARM的开发板上电的瞬间&#xff0c;CPU究竟做了什么&#xff1f;它从哪里开始执行代码&#xff1f;为什么有时候程序“看似烧好了”却毫无反应&#xff1f;这些问题的答案&…

作者头像 李华
网站建设 2026/9/2 23:30:22

产品经理 PRD 怎么写:通用模板+示例拆解+评审清单

很多团队并不缺 PRD&#xff0c;缺的是“可治理的 PRD”&#xff1a;目标写得宏大&#xff0c;边界写得含糊&#xff0c;验收写得主观&#xff0c;于是评审变争论、开发变猜题、上线变返工。本文从项目治理与组织协作视角回答“PRD 怎么写”&#xff0c;给出一套可复用的 PRD 模…

作者头像 李华
网站建设 2026/9/2 23:31:18

微服务分布式SpringBoot+Vue+Springcloud在线学习考试组卷管理系统 带前台-可视化

文章目录系统架构与技术栈核心功能模块智能化与可视化特性分布式技术实现安全与性能保障扩展性与适用场景主要技术与实现手段系统设计与实现的思路系统设计方法java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系…

作者头像 李华