当前位置: 首页 > news >正文

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:

小结

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

http://www.jsqmd.com/news/235609/

相关文章:

  • [特殊字符]_微服务架构下的性能调优实战[20260112163019]
  • 12. SELinux 加固 Linux 安全
  • 报告显示:小镇青年摆脱父辈人情链,从“关系继承“走向“关系开拓“ | 美通社头条
  • 基于电力电子系统的MOSFET基本工作原理系统学习指南
  • 全网最全10个AI论文软件,助本科生搞定毕业论文!
  • [特殊字符]_可扩展性架构设计:从单体到微服务的性能演进[20260112163630]
  • 新手必看:Altium Designer中过孔建模与仿真配置
  • 面试 Java 基础八股文十问十答第七期
  • 快速理解Altium Designer的阻抗控制设置方法
  • 接口测试用例的设计方法
  • 通过QTabWidget实现多步骤向导界面的方案
  • 2百万人围观的Claude Code 实战使用指南
  • 使用 IChatReducer 进行聊天记录缩减
  • 批量服务器操作:结合screen命令的高效管理策略
  • Session与Cookies
  • DeepSeek降AI有用吗?实测告诉你真相
  • UE5 C++(22-3生成类对象的函数):template<class R> R* UObject :: CreateDefaultSubobject(FName SubobjName,...)
  • 顶尖AI竟输给三岁宝宝,BabyVision测试暴露多模态模型硬伤
  • 二极管(一)——反向恢复时间
  • 通过Python实现Elasticsearch数据库访问的手把手教程
  • Gerber文件转PCB:新手必看反向流程
  • 结型场效应晶体管JEFT(一)——原理
  • 文档解析结果脏乱差?零样本适配各类格式!这个OCR多模态解析工具相当给力!
  • 《技术领先,市场沉默?专知智库白皮书定制,唤醒企业“沉睡的估值”》
  • 手把手教你排查Multisim数据库依赖项问题
  • 论文AI率从80%降到10%:我的亲身经历和方法分享
  • CANoe中UDS诊断报文发送手把手教程
  • 新一代信息技术 vs 人工智能
  • CANoe中UDS诊断报文发送手把手教程
  • 《不止于报告:专知智库如何用一份白皮书,为“隐形冠军”抢到行业定价权》