news 2026/4/28 18:59:19

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/4/27 8:04:11

016-扣代码:天翼云登录

网站地址&#xff1a;天翼云 加密参数定位 登录接口一般都是password加密&#xff1a; 直接xhr找加密位置&#xff1a; 这里a在这里声明的&#xff0c;赋值应该不会在上面&#xff0c;不管它&#xff0c;接着看&#xff0c;s中也有&#xff1a; 向上找s赋值位置&#xff1a; …

作者头像 李华
网站建设 2026/4/28 1:44:31

通过QTabWidget实现多步骤向导界面的方案

用 QTabWidget 打造灵活的多步骤向导界面&#xff1a;从原理到实战你有没有遇到过这样的场景&#xff1f;用户要完成一个复杂的配置流程——比如安装软件、导入大批量数据&#xff0c;或是设置一套系统参数。如果把这些操作堆在一个界面上&#xff0c;界面会变得臃肿不堪&#…

作者头像 李华
网站建设 2026/4/23 16:24:23

导师严选2026 AI论文工具TOP8:本科生毕业论文写作全测评

导师严选2026 AI论文工具TOP8&#xff1a;本科生毕业论文写作全测评 2026年AI论文工具测评&#xff1a;精准匹配本科生写作需求 随着人工智能技术在学术领域的深入应用&#xff0c;越来越多的本科生开始依赖AI论文工具提升写作效率与质量。然而&#xff0c;面对市场上琳琅满目的…

作者头像 李华
网站建设 2026/4/22 12:30:35

《认知升维白皮书定制:为什么80%的企业战略,困于20%的旧维度?》

《认知升维白皮书定制&#xff1a;为什么80%的企业战略&#xff0c;困于20%的旧维度&#xff1f;》审视众多企业的战略会议&#xff0c;你会发现一个令人不安的重复&#xff1a;尽管讨论的议题从“数字化转型”变为“人工智能革命”&#xff0c;但 讨论的维度 却惊人地一致——…

作者头像 李华
网站建设 2026/4/26 17:28:42

SSD1306在I2C模式下的启动停止信号详解

SSD1306驱动OLED屏&#xff1f;先搞懂I2C的“发令枪”和“收工哨”你有没有遇到过这种情况&#xff1a;SSD1306 OLED屏接好了&#xff0c;代码也烧进去了&#xff0c;可屏幕就是黑的——不亮、不闪、没反应。查电源&#xff1f;正常。看地址&#xff1f;没错。逻辑分析仪一抓波…

作者头像 李华
网站建设 2026/4/28 1:05:15

【环境安装】Linux-CentOS安装miniconda

1.下载miniconda wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh# 安装miniconda bash Miniconda3-latest-Linux-x86_64.sh2、定义安装路径 安装过程中会弹出安装须知&#xff0c;往下读&#xff0c;读完后会提示是否同意&#xff0c;点击【Ente…

作者头像 李华