js逆向——webpack扣法

这篇具有很好参考价值的文章主要介绍了js逆向——webpack扣法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

01 webpack讲解

webpack是个静态模块打包工具,目的是为了让前端工程师写的前端代码变成浏览器可以识别的代码,并且可以达到前端项目的模块化,也就是如何更高效地管理和维护项目中的每一个资源。

但无疑是对js逆向造成了妨碍。但如果掌握了扣取webpack的一些技巧也是不难的。接下来,说一下我对扣取webpack代码的一些理解。

1.1 webpack组成

一个最基本的webpack组成有两个部分:

  • 自执行函数
  • 模块加载器(实际上也就是一个函数而已)

webpack逆向,javascript,webpack,前端,爬虫

//1.传入的参数是一个数组
var _xxx;function(x){
    function xxx(y){    #这个是模块加载器,这个y传入的可以是索引和对象的key,参数表示的是列表或对象的形参
        x[y].call(参数) 
    }
    _xxx = xxx;
}( [function(){console.log("第一个")},
    function(){consolelog("第二个")},
    function(){console.log("第三个")}
   ] );

//比如
_xxx(0); //执行得到的就是输出——第一个
_xxx(1);//执行得到的就是输出——第二个

//2.传入的参数是一个对象
var _xxx;function(x){
    function xxx(y){    #这个是模块加载器,这个y传入的可以是索引和对象的key,参数表示的是列表或对象的形参
        x[y].call(参数) 
    }
    _xxx = xxx;
}( {
    obj1:function(){console.log("第一个")},
    obj2:function(){consolelog("第二个")},
    obj3:function(){console.log("第三个")}
   } );
//因为传入的是一个对象,那想要调用对象就要指明key
_xxx("obj1")
_xxx("obj2")//和数组相比只是调用方式不同而已,原理基本一致
1.2 实战看webpack组成

光说不练假把式,接下来我们从真实的网站中看一看关于webpack组成:

webpack逆向,javascript,webpack,前端,爬虫

通过观察真实网站的webpack可以发现,这种情况与我们自己写的那个大差不差,无非就是加载器函数中功能更完善了些,这种加载器函数与执行对象在一个文件中的webpack很好扣js,至于如何扣我们以后再说,今天要解决的是下面的这种要怎么扣呢?

webpack逆向,javascript,webpack,前端,爬虫

就像图中所展示的那样,要怎么才能把目标给扣出来呢?

首先,想要扣取webpack代码就要先找到其基本要素,注意:自执行函数不是关键,关键的是传入的实参,也就是那个对象(数组)

  • 传入的实参

    • 传入的实参也就是我们的目标,把目标函数放到自己构建的对象里面就行了
    //构建自己的对象,把上面的目标给填到这个里面就行
    {
         "wk8/": function(e, t, n) {
            "use strict";
            n.d(t, "g", function() {
            n.d(t, "q", function() {
            n.d(t, "m", function() {
            n.d(t, "I", function() {
            n.d(t, "o", function() {
            n.d(t, "r", function() {
            n.d(t, "v", function() {
            n.d(t, "n", function() {
            var o = n("zvER")
              , a = n("MuMZ");
            function r(e, t, n) {
                var r = {
                    username: e,
                    password: Object(a.a)(t),
                    captcha: n
                };
                return o.a.formPost("/user/login", r)
            }
            function i(e) {
            function m(e) {
            function g(e, t) {
            function y(e) {
            function L(e) {
        },
        "test":function(){console.log("test success!!")} //这个仅用于测试使用
    }
    
    • 当目标函数中有依赖的模块时,把依赖的模块也通通放到自己写的对象里面即可
  • 加载器函数

    • 当看到如上图的代码时可能会有人会不明白这哪里有加载器,就连自执行函数都没有

    • 但实际上肯定是有加载器的,如图

      webpack逆向,javascript,webpack,前端,爬虫

    • 所以在定位到目标时,目标的大函数一般会加载其他模块,若要加载其他模块就会使用到加载器,以此就可以找到加载器了

  • 但是,当断到我们想要的目标函数时再去定位n(“”)函数哪里是显示不出来的,如图

    webpack逆向,javascript,webpack,前端,爬虫

    这是因为加载器函数实际上是在你打开网页的时候就已经加载到内存中了,而只有当我们进行登录这一具体操作时才会执行调用这个函数,所以这时是找不到加载器的。

    解决方法也很简单: 只需在加载模块的前面加上断点,然后刷新页面就可以找到加载器的位置了

    webpack逆向,javascript,webpack,前端,爬虫

  • 到此,目标函数以及加载器都已经找齐了

1.3 webpack调用原理分析

在上面的环节中我们确定了目标函数并找到了加载器,但正如我们看到的那样,它并不像我们自己写的那个webpack直接把大对象给传进去了,而是在另一个独立的文件里面,那么加载器又是如何对另一份独立的文件中的模块进行加载的呢?

首先来看我们找的的那个加载器,如图

webpack逆向,javascript,webpack,前端,爬虫

接下来我们要解决的是自执行函数的形参c是如何变成独立文件中的那个存有模块的对象的:

  1. 我们把得到的自执行函数拿出来放到node.js环境中执行一下

    • 其中将传入的空数组变成一个对象,对象里面放有一个测试函数
    • 输出自执行函数的形参
    • 并将加载器函数给导出来

    webpack逆向,javascript,webpack,前端,爬虫

  2. 我们将目标函数所在的那个独立文件全部写入到另一个文件当中去

    webpack逆向,javascript,webpack,前端,爬虫

  3. 在自执行函数的上面对刚刚写入的文件进行引入,再次执行函数

    webpack逆向,javascript,webpack,前端,爬虫

  4. 通过实验,我们知道了通过引入外部文件可以将模块加载到形参里面,那么是如何实现的呢? 通过调试自执行代码可以明白

    • 在与单个文件有相同部分下面可疑部分打上几个断点如下:

    webpack逆向,javascript,webpack,前端,爬虫

    • 接着向下进行,通过读代码可以知道通过for循环执行了函数n(),通过下图可以知道是为了加载外部模块

    webpack逆向,javascript,webpack,前端,爬虫

    • 再向下进行到第三个断点

    webpack逆向,javascript,webpack,前端,爬虫

    • 至于那个for循环是怎么将外部模块进行引入的我们并不需要深究,只需要知道当扣代码时一定不能将这个for循环给忘掉,如果忘掉的话外部文件是无法加载进来的。。。

接下来会结合几个具体例子来讲解一下webpack的扣法

over!!文章来源地址https://www.toymoban.com/news/detail-773777.html

到了这里,关于js逆向——webpack扣法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • webpack实战:某网站JS逆向分析

      好的逆向能够帮助我们了解加密实现,然后根据加密方式( md5,base64,res,des,rsa… )还原加密算法的过程。可以看看我之前的这篇文章:快速定位查找加密方式特征与技巧 目标站点 : aHR0cHM6Ly9hY2NvdW50LnBwZGFpLmNvbS9wYy9sb2dpbg== 此网站的用户名 userName 和密码 password 都是加密的,密

    2024年02月09日
    浏览(15)
  • 【python】webpack是什么,如何逆向出webpack打包的js代码?

    ✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN新星创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开

    2024年03月25日
    浏览(32)
  • web逆向笔记:js逆向案例四 QQ音乐 sign值(webpack打包代码如何扣取)

    一、webpack介绍: ​ Webpack 是一个模块打包工具,主要用于 JavaScript 应用程序。它可以将许多模块打包成一个或多个 bundle,从而优化加载速度和减少加载时间。Webpack 可以处理各种资源,包括 JavaScript、CSS、图片、字体等,并且可以将其转换为浏览器可以理解的格式。 Webpack

    2024年04月25日
    浏览(12)
  • 【爬虫逆向案例】某道翻译js逆向—— sign解密

    声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! 相信各位小伙伴在写爬虫的时候经常会遇到这样的情况,一些需要携带的参数一直在变化,今天逆向的这个网站某道翻译也如此: 可以发现变的就两个参数,一个 sign,一个是 m

    2024年02月15日
    浏览(13)
  • WebSocket爬虫与JS逆向实战

    声明:本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除!由于本人水平有限,如有理解或者描述不准确的地方,还望各位大佬指教!! 练习网站: Q3JhenkgUHJvTW9ua2V5IGh0dHBzOi8vd3d3LnBhbnpob3UuZ292LmNuL3p3Z2tfMTU4NjEve

    2024年02月07日
    浏览(14)
  • 【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密

    声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! 今天逆向的这个网站 某易云音乐 歌曲的评论列表 而要拿到评论列表爬虫发送的表单需要两个参数 params 和 encSecKey。这两个玩意是加密的,所以重点就是怎么搞定这两个参数。 话

    2024年02月14日
    浏览(11)
  • 爬虫+RPC+js逆向---直接获取加密值

    免责声明:本文仅做技术交流与学习,请勿用于其它违法行为;如果造成不便,请及时联系... 目录 爬虫+RPC+js逆向---直接获取加密值 target网址: 抓包 下断点 找到加密函数 分析参数 RPC流程 一坨: 二坨: 运行py,拿到加密值 优志愿_2024高考志愿填报系统-新高考志愿填报选科指南 数据往

    2024年04月14日
    浏览(6)
  • Python爬虫:抖音 JS XB逆向解析

    哈喽兄弟们,抖音现在有JS加密,以前的方法爬不了饿了,今天来实现一下某音短视频的JS逆向解析。 知识点 动态数据抓包`在这里插入代码片` requests发送请求 X-Bogus 参数逆向 环境模块 python 3.8               运行代码 pycharm 2022.3           辅助敲代码 requests 

    2024年02月08日
    浏览(20)
  • 关于 Python 爬虫 JS 逆向的入门指南

    请注意,这篇指南只是一个概述,为了深入理解和实践,你可能需要额外的学习和实践。         Python 爬虫经常遇到需要逆向 JavaScript 生成的网站内容和逻辑的情况。这种技能对于爬取动态网站,尤其是那些使用了复杂 JS 逻辑和反爬虫技术的网站,尤其重要。 Python 爬虫概

    2024年01月16日
    浏览(14)
  • 21.网络爬虫—js逆向详讲与实战

    前言 : 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️: Python领域新星创作者,CSDN实力新星认证,阿里云社区专家博主 📝​📝第一篇文章《1.认识网络爬虫》获得 全站热榜第一,python领域热榜第一 。 🧾 🧾第四篇文章《4.网络爬虫—Post请求(实战演示)》 全站热榜第八 。

    2024年02月02日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包