zoukankan      html  css  js  c++  java
  • js反向解析爬取企**网站

    1.反向解析案例一

    • 工具
    Nodejs、pycharm
    
    • 目标网站
    https://www.qimingpian.com/finosda/project/pinvestment
    
    • 爬取内容

    • F12点开开发工具,刷新页面。在XHR,Doc就有3个文件:
    pinvestment、productListVip、industryFieldVip
    

    • 看pinvestment的Resonse内容发现一大堆JS,没有网页信息。

    • 在productListVip和industryFieldVip的响应内容,都会有一个”encrypt_data”的参数

    • 参数内容类一串Base64字符,即然网站对这个参数做了加密,说明它不想被爬取,所以可以假设目标数据“encrypt_data”。

    • 在开发者攻击里Sources选项卡中,找到网页JS文件夹,结面右侧为断点调试栏。

    • 在JS文件里打断点,然后一步步调试,在断点调试栏里有个XHR/fetch Breakpoints,它支持在发送XHR请求的位置打上断点,我们找到的两个含加密参数的请求就是XHR类型的,正好用上这个功能。点击+号输入请求名称即可:

    • 刷新页面,然后一步一步执行,发现可疑信息把鼠标放上去看:

    • 调试技巧:

      1压缩的js点击左下角的花括号来美化
      2在调试过程中使用Console执行js代码。比如我觉得这个函数很可疑,想执行一下看看。
      
    • 选中Object(u,a)(e.encrypt_data)右键点击Evaluate selected text in Console,就会在调试器打印:

    • 咦,这不就是我们想要的结果吗?

    • function o(t)就是我们需要的解密函数,可以看到它先调用s函数,传入了四个参数,除了a.a.decode(t)外其他三个都是写死的,最后用JSON.parse转为json对象。那么这个a.a.decode(t)又是什么鬼?

    • 跳转到另外一个执行JS文件的函数。这样新建一个JS文件,把涉及function o 的代码全部抠出来。
    //代码第一段:
    function o(t) {
                return JSON.parse(s("5e5062e82f15fe4ca9d24bc5", a.a.decode(t), 0, 0, "012345677890123", 1))
            }
    //改写代码
    function o(t) {
                return new Buffer(s("5e5062e82f15fe4ca9d24bc5", my_decode(t), 0, 0, "012345677890123", 1)).toString("base64")
            }
    //base64编码  Buffer为Notejs方法  my_decode为第二端代码新命名,因为第二段代码为匿名函数需要重新命名
    //····················································
    //代码第二段:
    decode: function(t) {
                            var e = (t = String(t).replace(f, "")).length;
                            e % 4 == 0 && (e = (t = t.replace(/==?$/, "")).length),
                            (e % 4 == 1 || /[^+a-zA-Z0-9/]/.test(t)) && l("Invalid character: the string to be decoded is not correctly encoded.");
                            for (var n, r, i = 0, o = "", a = -1; ++a < e; )
                                r = c.indexOf(t.charAt(a)),
                                n = i % 4 ? 64 * n + r : r,
                                i++ % 4 && (o += String.fromCharCode(255 & n >> (-2 * i & 6)));
                            return o
                        }
    //改写代码
    function my_decode(t) {
                            c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
                            f = /[	
    f
     ]/g
                            var e = (t = String(t).replace(f, "")).length;
                            e % 4 == 0 && (e = (t = t.replace(/==?$/, "")).length),
                            (e % 4 == 1 || /[^+a-zA-Z0-9/]/.test(t)) && l("Invalid character: the string to be decoded is not correctly encoded.");
                            for (var n, r, i = 0, o = "", a = -1; ++a < e; )
                                r = c.indexOf(t.charAt(a)),
                                n = i % 4 ? 64 * n + r : r,
                                i++ % 4 && (o += String.fromCharCode(255 & n >> (-2 * i & 6)));
                            return o
                        }
    //c,f为固定值,可在前端选中查看见下图
    
    //····················································不需要更改
    function s(t, e, i, n, a, s) {
                var o, r, c, l, u, d, h, p, f, v, m, g, b, y, _ = new Array(16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756), C = new Array(-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344), w = new Array(520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584), x = new Array(8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928), k = new Array(256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080), T = new Array(536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312), A = new Array(2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154), L = new Array(268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696), S = function(t) {
                    for (var e, i, n, a = new Array(0,4,536870912,536870916,65536,65540,536936448,536936452,512,516,536871424,536871428,66048,66052,536936960,536936964), s = new Array(0,1,1048576,1048577,67108864,67108865,68157440,68157441,256,257,1048832,1048833,67109120,67109121,68157696,68157697), o = new Array(0,8,2048,2056,16777216,16777224,16779264,16779272,0,8,2048,2056,16777216,16777224,16779264,16779272), r = new Array(0,2097152,134217728,136314880,8192,2105344,134225920,136323072,131072,2228224,134348800,136445952,139264,2236416,134356992,136454144), c = new Array(0,262144,16,262160,0,262144,16,262160,4096,266240,4112,266256,4096,266240,4112,266256), l = new Array(0,1024,32,1056,0,1024,32,1056,33554432,33555456,33554464,33555488,33554432,33555456,33554464,33555488), u = new Array(0,268435456,524288,268959744,2,268435458,524290,268959746,0,268435456,524288,268959744,2,268435458,524290,268959746), d = new Array(0,65536,2048,67584,536870912,536936448,536872960,536938496,131072,196608,133120,198656,537001984,537067520,537004032,537069568), h = new Array(0,262144,0,262144,2,262146,2,262146,33554432,33816576,33554432,33816576,33554434,33816578,33554434,33816578), p = new Array(0,268435456,8,268435464,0,268435456,8,268435464,1024,268436480,1032,268436488,1024,268436480,1032,268436488), f = new Array(0,32,0,32,1048576,1048608,1048576,1048608,8192,8224,8192,8224,1056768,1056800,1056768,1056800), v = new Array(0,16777216,512,16777728,2097152,18874368,2097664,18874880,67108864,83886080,67109376,83886592,69206016,85983232,69206528,85983744), m = new Array(0,4096,134217728,134221824,524288,528384,134742016,134746112,16,4112,134217744,134221840,524304,528400,134742032,134746128), g = new Array(0,4,256,260,0,4,256,260,1,5,257,261,1,5,257,261), b = t.length > 8 ? 3 : 1, y = new Array(32 * b), _ = new Array(0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0), C = 0, w = 0, x = 0; x < b; x++) {
                        var k = t.charCodeAt(C++) << 24 | t.charCodeAt(C++) << 16 | t.charCodeAt(C++) << 8 | t.charCodeAt(C++)
                          , T = t.charCodeAt(C++) << 24 | t.charCodeAt(C++) << 16 | t.charCodeAt(C++) << 8 | t.charCodeAt(C++);
                        k ^= (n = 252645135 & (k >>> 4 ^ T)) << 4,
                        k ^= n = 65535 & ((T ^= n) >>> -16 ^ k),
                        k ^= (n = 858993459 & (k >>> 2 ^ (T ^= n << -16))) << 2,
                        k ^= n = 65535 & ((T ^= n) >>> -16 ^ k),
                        k ^= (n = 1431655765 & (k >>> 1 ^ (T ^= n << -16))) << 1,
                        k ^= n = 16711935 & ((T ^= n) >>> 8 ^ k),
                        n = (k ^= (n = 1431655765 & (k >>> 1 ^ (T ^= n << 8))) << 1) << 8 | (T ^= n) >>> 20 & 240,
                        k = T << 24 | T << 8 & 16711680 | T >>> 8 & 65280 | T >>> 24 & 240,
                        T = n;
                        for (var A = 0; A < _.length; A++)
                            _[A] ? (k = k << 2 | k >>> 26,
                            T = T << 2 | T >>> 26) : (k = k << 1 | k >>> 27,
                            T = T << 1 | T >>> 27),
                            T &= -15,
                            e = a[(k &= -15) >>> 28] | s[k >>> 24 & 15] | o[k >>> 20 & 15] | r[k >>> 16 & 15] | c[k >>> 12 & 15] | l[k >>> 8 & 15] | u[k >>> 4 & 15],
                            i = d[T >>> 28] | h[T >>> 24 & 15] | p[T >>> 20 & 15] | f[T >>> 16 & 15] | v[T >>> 12 & 15] | m[T >>> 8 & 15] | g[T >>> 4 & 15],
                            n = 65535 & (i >>> 16 ^ e),
                            y[w++] = e ^ n,
                            y[w++] = i ^ n << 16
                    }
                    return y
                }(t), z = 0, B = e.length, I = 0, j = 32 == S.length ? 3 : 9;
                p = 3 == j ? i ? new Array(0,32,2) : new Array(30,-2,-2) : i ? new Array(0,32,2,62,30,-2,64,96,2) : new Array(94,62,-2,32,64,2,30,-2,-2),
                2 == s ? e += "        " : 1 == s ? i && (c = 8 - B % 8,
                e += String.fromCharCode(c, c, c, c, c, c, c, c),
                8 === c && (B += 8)) : s || (e += "");
                var F = ""
                  , $ = "";
                for (1 == n && (f = a.charCodeAt(z++) << 24 | a.charCodeAt(z++) << 16 | a.charCodeAt(z++) << 8 | a.charCodeAt(z++),
                m = a.charCodeAt(z++) << 24 | a.charCodeAt(z++) << 16 | a.charCodeAt(z++) << 8 | a.charCodeAt(z++),
                z = 0); z < B; ) {
                    for (d = e.charCodeAt(z++) << 24 | e.charCodeAt(z++) << 16 | e.charCodeAt(z++) << 8 | e.charCodeAt(z++),
                    h = e.charCodeAt(z++) << 24 | e.charCodeAt(z++) << 16 | e.charCodeAt(z++) << 8 | e.charCodeAt(z++),
                    1 == n && (i ? (d ^= f,
                    h ^= m) : (v = f,
                    g = m,
                    f = d,
                    m = h)),
                    d ^= (c = 252645135 & (d >>> 4 ^ h)) << 4,
                    d ^= (c = 65535 & (d >>> 16 ^ (h ^= c))) << 16,
                    d ^= c = 858993459 & ((h ^= c) >>> 2 ^ d),
                    d ^= c = 16711935 & ((h ^= c << 2) >>> 8 ^ d),
                    d = (d ^= (c = 1431655765 & (d >>> 1 ^ (h ^= c << 8))) << 1) << 1 | d >>> 31,
                    h = (h ^= c) << 1 | h >>> 31,
                    r = 0; r < j; r += 3) {
                        for (b = p[r + 1],
                        y = p[r + 2],
                        o = p[r]; o != b; o += y)
                            l = h ^ S[o],
                            u = (h >>> 4 | h << 28) ^ S[o + 1],
                            c = d,
                            d = h,
                            h = c ^ (C[l >>> 24 & 63] | x[l >>> 16 & 63] | T[l >>> 8 & 63] | L[63 & l] | _[u >>> 24 & 63] | w[u >>> 16 & 63] | k[u >>> 8 & 63] | A[63 & u]);
                        c = d,
                        d = h,
                        h = c
                    }
                    h = h >>> 1 | h << 31,
                    h ^= c = 1431655765 & ((d = d >>> 1 | d << 31) >>> 1 ^ h),
                    h ^= (c = 16711935 & (h >>> 8 ^ (d ^= c << 1))) << 8,
                    h ^= (c = 858993459 & (h >>> 2 ^ (d ^= c))) << 2,
                    h ^= c = 65535 & ((d ^= c) >>> 16 ^ h),
                    h ^= c = 252645135 & ((d ^= c << 16) >>> 4 ^ h),
                    d ^= c << 4,
                    1 == n && (i ? (f = d,
                    m = h) : (d ^= v,
                    h ^= g)),
                    $ += String.fromCharCode(d >>> 24, d >>> 16 & 255, d >>> 8 & 255, 255 & d, h >>> 24, h >>> 16 & 255, h >>> 8 & 255, 255 & h),
                    512 == (I += 8) && (F += $,
                    $ = "",
                    I = 0)
                }
                if (F = (F += $).replace(/*$/g, ""),
                !i) {
                    if (1 === s) {
                        var N = 0;
                        (B = F.length) && (N = F.charCodeAt(B - 1)),
                        N <= 8 && (F = F.substring(0, B - N))
                    }
                    F = decodeURIComponent(escape(F))
                }
                return F
            }
    //·················································
    //定义新函数:encrypt_data为https://vipapi.qimingpian.com/DataList/productListVip  返回的encrypt_data值。
    function res() {
        encrypt_data = "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"
        //执行o,返回值为要爬取结果
        decrypt_data = o(encrypt_data);
    	
        return decrypt_data
    }
    
    
    • c的产看结果:

    • f查看的结果:

    • 编写py代码:

      import execjs
      import base64
      import json
      
      def decrypt(encrypt_data):
          #读取刚才编写JS文件
          ctx = execjs.compile(open('test2.js').read())
          #res返回最终结果为要的数据
          return base64.b64decode(ctx.call('res',encrypt_data))
      
      
      if __name__ == '__main__':
          encrypt_data = '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'
          decrypt_data = decrypt(encrypt_data)
      
          json_data = json.loads(decrypt_data)
          print(json_data)
      
      • 最终结果:

      • 确实是我们需要的数据没错,最后用Python去调用解密函数就行了。调用时还有个需要注意的地方,因为直接返回object给Python会报错,所以这里将JSON.parse移除了,返回parse前的json字符串

      //解密函数
      function my_decrypt(t) {
          return s("5e5062e82f15fe4ca9d24bc5", my_decode(t), 0, 0, "012345677890123", 1)
      }
      
      • 同时为了防止这串字符串内有特殊编码的字符,这里将它转成base64再return:
      function my_decrypt(t) {
          return new Buffer(s("5e5062e82f15fe4ca9d24bc5", my_decode(t), 0, 0, "012345677890123", 1)).toString("base64")
      }
      
      • 然后在Python中用base64库的b64decode方法来解码即可。

    Node.js Buffer(缓冲区)

    JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。
    
    但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。
    
     Node.js 中,Buffer 类是随 Node 内核一起发布的核心库。Buffer 库为 Node.js 带来了一种存储原始数据的方法,可以让 Node.js 处理二进制数据,每当需要在 Node.js 中处理I/O操作中移动的数据时,就有可能使用 Buffer 库。原始数据存储在 Buffer 类的实例中。一个 Buffer 类似于一个整数数组,但它对应于 V8 堆内存之外的一块原始内存。
    
    • Buffer与字符编码
    Buffer 实例一般用于表示编码字符的序列,比如 UTF-8 、 UCS2 、 Base64 、或十六进制编码的数据。 通过使用显式的字符编码,就可以在 Buffer 实例与普通的 JavaScript 字符串之间进行相互转换。
    
    • 示例:

      > const buf = Buffer.from('xujunkai','ascii')
      undefined
      > buf.toString("hex")
      '78756a756e6b6169'
      > buf.toString("base64")
      'eHVqdW5rYWk='
      >    
      
  • 相关阅读:
    C/C++数组名与指针区别深入探索(转)
    mysql 的编译安装
    rpm的问题 ~/.rpmmacros %_rpmlock_path
    GCC中的弱符号与强符号(转)
    关于printf系列函数
    如何修改机器名
    multiple definition of XXXX 的解决
    由无名对象(临时对象)引发的关于“引用”的思考
    关于date中时间字符串的格式
    月薪不同,面试题不同!
  • 原文地址:https://www.cnblogs.com/xujunkai/p/12319017.html
Copyright © 2011-2022 走看看