繁体   English   中英

javascript 将 webpackJsonp 解码为可读代码

[英]javascript decoding webpackJsonp to readable code

有没有办法把这段代码改成清晰易读的代码?

(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{"2wwy":function(n,t,e){n.exports=e("nhzr")},E8gZ:function(n,t,e){var o=e("jmDH"),i=e("w6GO"),r=e("NsO/"),u=e("NV0k").f;n.exports=function(n){return function(t){for(var e,c=r(t),a=i(c),f=a.length,s=0,l=[];f>s;)e=a[s++],o&&!u.call(c,e)||l.push(n?[e,c[e]]:c[e]);return l}}},f0Zw:function(n,t,e){"use strict";e.r(t);var o=e("q1tI"),i=e.n(o),r=e("/MKj"),u=e("2wwy"),c=e.n(u),a=e("G4qV"),f=Object(a.a)((function(n){return n.g_notifications}),(function(n){return c()(n)})),s=e("F7NL"),l=e("kOwS"),p=e("qNsG"),v=e("CnBM"),w=e.n(v)()({loader:function(){return Promise.all([e.e(0),e.e(6)]).then(e.bind(null,"OyQA"))},loading:function(){return null},modules:["Notification"]}),b=i.a.createElement,d=function(n){var t=n.notifications,e=n.onRemove;return b(i.a.Fragment,null,t.map((function(n){var t=n.id,o=Object(p.a)(n,["id"]);return b(w,Object(l.a)({onRemove:e},o,{key:t,id:t}))})))},O=i.a.createElement,m=Object(r.b)((function(n){return{notifications:f(n)}})),j=function(n){var t=n.dataset.id;Object(s.b)(t)},g=m((function(n){var t=n.notifications;return O(d,{onRemove:j,notifications:t})}));t.default=g},fW1p:function(n,t,e){var o=e("Y7ZC"),i=e("E8gZ")(!1);o(o.S,"Object",{values:function(n){return i(n)}})},nhzr:function(n,t,e){e("fW1p"),n.exports=e("WEpk").Object.values}}]);

这看起来像是 Webpack 4 的输出。

如果您正在查看的站点公开了源地图,您将在浏览器的开发工具中的源代码下看到一个标记为“Webpack”的部分,其中将包含使用 Webpack 捆绑的脚本的源代码。

如果站点不公开源地图,第一步是格式化代码。 然后,您可以在弄清楚变量的作用时开始手动重命名变量。 在这种情况下,站点上必须有更多脚本,因为似乎有对文件中未定义的模块的引用。

通过Prettier传递此代码会得到:

(window.webpackJsonp = window.webpackJsonp || []).push([
  [7],
  {
    "2wwy": function(n, t, e) {
      n.exports = e("nhzr");
    },
    E8gZ: function(n, t, e) {
      var o = e("jmDH"),
        i = e("w6GO"),
        r = e("NsO/"),
        u = e("NV0k").f;
      n.exports = function(n) {
        return function(t) {
          for (var e, c = r(t), a = i(c), f = a.length, s = 0, l = []; f > s; )
            (e = a[s++]), (o && !u.call(c, e)) || l.push(n ? [e, c[e]] : c[e]);
          return l;
        };
      };
    },
    f0Zw: function(n, t, e) {
      "use strict";
      e.r(t);
      var o = e("q1tI"),
        i = e.n(o),
        r = e("/MKj"),
        u = e("2wwy"),
        c = e.n(u),
        a = e("G4qV"),
        f = Object(a.a)(
          function(n) {
            return n.g_notifications;
          },
          function(n) {
            return c()(n);
          }
        ),
        s = e("F7NL"),
        l = e("kOwS"),
        p = e("qNsG"),
        v = e("CnBM"),
        w = e.n(v)()({
          loader: function() {
            return Promise.all([e.e(0), e.e(6)]).then(e.bind(null, "OyQA"));
          },
          loading: function() {
            return null;
          },
          modules: ["Notification"]
        }),
        b = i.a.createElement,
        d = function(n) {
          var t = n.notifications,
            e = n.onRemove;
          return b(
            i.a.Fragment,
            null,
            t.map(function(n) {
              var t = n.id,
                o = Object(p.a)(n, ["id"]);
              return b(w, Object(l.a)({ onRemove: e }, o, { key: t, id: t }));
            })
          );
        },
        O = i.a.createElement,
        m = Object(r.b)(function(n) {
          return { notifications: f(n) };
        }),
        j = function(n) {
          var t = n.dataset.id;
          Object(s.b)(t);
        },
        g = m(function(n) {
          var t = n.notifications;
          return O(d, { onRemove: j, notifications: t });
        });
      t.default = g;
    },
    fW1p: function(n, t, e) {
      var o = e("Y7ZC"),
        i = e("E8gZ")(!1);
      o(o.S, "Object", {
        values: function(n) {
          return i(n);
        }
      });
    },
    nhzr: function(n, t, e) {
      e("fW1p"), (n.exports = e("WEpk").Object.values);
    }
  }
]);

找到自己几乎是不可能的,我的意思是解码的结果是基于这个原则:

var func = {
    init: function() {
        console.log('test');
        this.set();
    },
    set: function(){
        $('.body .test').innerHTML = 'test';
    }
}
func.init();

简单易读

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM