反爬虫破解——裁判文书网

这段时间研究了下裁判文书网的反爬策略感觉挺有意思的,这里给大家分享一下

思路分析

我们先在裁判文书网上随便搜索点东西,我这里搜的是"经济犯罪",可以看到返回了很多页的数据,我们点击下一页然后看下请求
在这里插入图片描述
观察上图中的参数,并试着在postman中调用一下试试看
在这里插入图片描述
可以看到直接能发送成功,并且修改pageNum值之后仍然能够正常拿到返回结果,可是返回结果是加密的。那我们先来研究下如何进行解密。
观察可以看到返回结构如下

{
    "code": 1,
    "description": null,
    "secretKey": "I7NGzDPxwy01xcpHGrNnZcDo",
    "result": ".........",
    "success": true
}

其中secretKey似乎是秘钥,尝试搜索secretKey
在这里插入图片描述
搜索后可以看到在website.js中似乎有解密的代码(上图中4位置)。我们在website.js的245行(上图中4位置)打上断点,然后在网站上点击翻页,可以发现网页会在断点处停住,然后解密函数,可以找到解密方法的位置
在这里插入图片描述
在这里插入图片描述
观察此函数可以发现此解密方法在js中有完整代码,加解密代码压缩后如下

var CryptoJS=CryptoJS||function(y,h){var j={},g=j.lib={},f=function(){},z=g.Base={extend:function(b){f.prototype=this;var d=new f;b&&d.mixIn(b);d.hasOwnProperty("init")||(d.init=function(){d.$super.init.apply(this,arguments)});d.init.prototype=d;d.$super=this;return d},create:function(){var b=this.extend();b.init.apply(b,arguments);return b},init:function(){},mixIn:function(b){for(var d in b){b.hasOwnProperty(d)&&(this[d]=b[d])}b.hasOwnProperty("toString")&&(this.toString=b.toString)},clone:function(){return this.init.prototype.extend(this)}},c=g.WordArray=z.extend({init:function(b,d){b=this.words=b||[];this.sigBytes=d!=h?d:4*b.length},toString:function(b){return(b||t).stringify(this)},concat:function(d){var n=this.words,b=d.words,l=this.sigBytes;d=d.sigBytes;this.clamp();if(l%4){for(var e=0;e<d;e++){n[l+e>>>2]|=(b[e>>>2]>>>24-8*(e%4)&255)<<24-8*((l+e)%4)}}else{if(65535<b.length){for(e=0;e<d;e+=4){n[l+e>>>2]=b[e>>>2]}}else{n.push.apply(n,b)}}this.sigBytes+=d;return this},clamp:function(){var b=this.words,d=this.sigBytes;b[d>>>2]&=4294967295<<32-8*(d%4);b.length=y.ceil(d/4)},clone:function(){var b=z.clone.call(this);b.words=this.words.slice(0);return b},random:function(d){for(var e=[],b=0;b<d;b+=4){e.push(4294967296*y.random()|0)}return new c.init(e,d)}}),o=j.enc={},t=o.Hex={stringify:function(d){var n=d.words;d=d.sigBytes;for(var b=[],l=0;l<d;l++){var e=n[l>>>2]>>>24-8*(l%4)&255;b.push((e>>>4).toString(16));b.push((e&15).toString(16))}return b.join("")},parse:function(d){for(var l=d.length,b=[],e=0;e<l;e+=2){b[e>>>3]|=parseInt(d.substr(e,2),16)<<24-4*(e%8)}return new c.init(b,l/2)}},k=o.Latin1={stringify:function(d){var l=d.words;d=d.sigBytes;for(var b=[],e=0;e<d;e++){b.push(String.fromCharCode(l[e>>>2]>>>24-8*(e%4)&255))}return b.join("")},parse:function(d){for(var l=d.length,b=[],e=0;e<l;e++){b[e>>>2]|=(d.charCodeAt(e)&255)<<24-8*(e%4)}return new c.init(b,l)}},m=o.Utf8={stringify:function(b){try{return decodeURIComponent(escape(k.stringify(b)))}catch(d){throw Error("Malformed UTF-8 data")}},parse:function(b){return k.parse(unescape(encodeURIComponent(b)))}},a=g.BufferedBlockAlgorithm=z.extend({reset:function(){this._data=new c.init;this._nDataBytes=0},_append:function(b){"string"==typeof b&&(b=m.parse(b));this._data.concat(b);this._nDataBytes+=b.sigBytes},_process:function(n){var s=this._data,l=s.words,q=s.sigBytes,p=this.blockSize,d=q/(4*p),d=n?y.ceil(d):y.max((d|0)-this._minBufferSize,0);n=d*p;q=y.min(4*n,q);if(n){for(var r=0;r<n;r+=p){this._doProcessBlock(l,r)}r=l.splice(0,n);s.sigBytes-=q}return new c.init(r,q)},clone:function(){var b=z.clone.call(this);b._data=this._data.clone();return b},_minBufferSize:0});g.Hasher=a.extend({cfg:z.extend(),init:function(b){this.cfg=this.cfg.extend(b);this.reset()},reset:function(){a.reset.call(this);this._doReset()},update:function(b){this._append(b);this._process();return this},finalize:function(b){b&&this._append(b);return this._doFinalize()},blockSize:16,_createHelper:function(b){return function(e,d){return(new b.init(d)).finalize(e)}},_createHmacHelper:function(b){return function(e,d){return(new i.HMAC.init(b,d)).finalize(e)}}});var i=j.algo={};return j}(Math);(function(){var b=CryptoJS,a=b.lib.WordArray;b.enc.Base64={stringify:function(i){var j=i.words,e=i.sigBytes,g=this._map;i.clamp();i=[];for(var h=0;h<e;h+=3){for(var c=(j[h>>>2]>>>24-8*(h%4)&255)<<16|(j[h+1>>>2]>>>24-8*((h+1)%4)&255)<<8|j[h+2>>>2]>>>24-8*((h+2)%4)&255,f=0;4>f&&h+0.75*f<e;f++){i.push(g.charAt(c>>>6*(3-f)&63))}}if(j=g.charAt(64)){for(;i.length%4;){i.push(j)}}return i.join("")},parse:function(j){var k=j.length,i=this._map,g=i.charAt(64);g&&(g=j.indexOf(g),-1!=g&&(k=g));for(var g=[],h=0,e=0;e<k;e++){if(e%4){var f=i.indexOf(j.charAt(e-1))<<2*(e%4),c=i.indexOf(j.charAt(e))>>>6-2*(e%4);g[h>>>2]|=(f|c)<<24-8*(h%4);h++}}return a.create(g,h)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})();(function(m){function f(l,r,n,s,d,q,p){l=l+(r&n|~r&s)+d+p;return(l<<q|l>>>32-q)+r}function g(l,r,n,s,d,q,p){l=l+(r&s|n&~s)+d+p;return(l<<q|l>>>32-q)+r}function e(l,r,n,s,d,q,p){l=l+(r^n^s)+d+p;return(l<<q|l>>>32-q)+r}function c(l,r,n,s,d,q,p){l=l+(n^(r|~s))+d+p;return(l<<q|l>>>32-q)+r}for(var o=CryptoJS,a=o.lib,j=a.WordArray,k=a.Hasher,a=o.algo,h=[],i=0;64>i;i++){h[i]=4294967296*m.abs(m.sin(i+1))|0}a=a.MD5=k.extend({_doReset:function(){this._hash=new j.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(J,T){for(var V=0;16>V;V++){var U=T+V,N=J[U];J[U]=(N<<8|N>>>24)&16711935|(N<<24|N>>>8)&4278255360}var V=this._hash.words,U=J[T+0],N=J[T+1],S=J[T+2],F=J[T+3],d=J[T+4],L=J[T+5],H=J[T+6],n=J[T+7],p=J[T+8],E=J[T+9],l=J[T+10],b=J[T+11],M=J[T+12],K=J[T+13],I=J[T+14],G=J[T+15],R=V[0],Q=V[1],P=V[2],O=V[3],R=f(R,Q,P,O,U,7,h[0]),O=f(O,R,Q,P,N,12,h[1]),P=f(P,O,R,Q,S,17,h[2]),Q=f(Q,P,O,R,F,22,h[3]),R=f(R,Q,P,O,d,7,h[4]),O=f(O,R,Q,P,L,12,h[5]),P=f(P,O,R,Q,H,17,h[6]),Q=f(Q,P,O,R,n,22,h[7]),R=f(R,Q,P,O,p,7,h[8]),O=f(O,R,Q,P,E,12,h[9]),P=f(P,O,R,Q,l,17,h[10]),Q=f(Q,P,O,R,b,22,h[11]),R=f(R,Q,P,O,M,7,h[12]),O=f(O,R,Q,P,K,12,h[13]),P=f(P,O,R,Q,I,17,h[14]),Q=f(Q,P,O,R,G,22,h[15]),R=g(R,Q,P,O,N,5,h[16]),O=g(O,R,Q,P,H,9,h[17]),P=g(P,O,R,Q,b,14,h[18]),Q=g(Q,P,O,R,U,20,h[19]),R=g(R,Q,P,O,L,5,h[20]),O=g(O,R,Q,P,l,9,h[21]),P=g(P,O,R,Q,G,14,h[22]),Q=g(Q,P,O,R,d,20,h[23]),R=g(R,Q,P,O,E,5,h[24]),O=g(O,R,Q,P,I,9,h[25]),P=g(P,O,R,Q,F,14,h[26]),Q=g(Q,P,O,R,p,20,h[27]),R=g(R,Q,P,O,K,5,h[28]),O=g(O,R,Q,P,S,9,h[29]),P=g(P,O,R,Q,n,14,h[30]),Q=g(Q,P,O,R,M,20,h[31]),R=e(R,Q,P,O,L,4,h[32]),O=e(O,R,Q,P,p,11,h[33]),P=e(P,O,R,Q,b,16,h[34]),Q=e(Q,P,O,R,I,23,h[35]),R=e(R,Q,P,O,N,4,h[36]),O=e(O,R,Q,P,d,11,h[37]),P=e(P,O,R,Q,n,16,h[38]),Q=e(Q,P,O,R,l,23,h[39]),R=e(R,Q,P,O,K,4,h[40]),O=e(O,R,Q,P,U,11,h[41]),P=e(P,O,R,Q,F,16,h[42]),Q=e(Q,P,O,R,H,23,h[43]),R=e(R,Q,P,O,E,4,h[44]),O=e(O,R,Q,P,M,11,h[45]),P=e(P,O,R,Q,G,16,h[46]),Q=e(Q,P,O,R,S,23,h[47]),R=c(R,Q,P,O,U,6,h[48]),O=c(O,R,Q,P,n,10,h[49]),P=c(P,O,R,Q,I,15,h[50]),Q=c(Q,P,O,R,L,21,h[51]),R=c(R,Q,P,O,M,6,h[52]),O=c(O,R,Q,P,F,10,h[53]),P=c(P,O,R,Q,l,15,h[54]),Q=c(Q,P,O,R,N,21,h[55]),R=c(R,Q,P,O,p,6,h[56]),O=c(O,R,Q,P,G,10,h[57]),P=c(P,O,R,Q,H,15,h[58]),Q=c(Q,P,O,R,K,21,h[59]),R=c(R,Q,P,O,d,6,h[60]),O=c(O,R,Q,P,b,10,h[61]),P=c(P,O,R,Q,S,15,h[62]),Q=c(Q,P,O,R,E,21,h[63]);
V[0]=V[0]+R|0;V[1]=V[1]+Q|0;V[2]=V[2]+P|0;V[3]=V[3]+O|0},_doFinalize:function(){var l=this._data,p=l.words,n=8*this._nDataBytes,q=8*l.sigBytes;p[q>>>5]|=128<<24-q%32;var d=m.floor(n/4294967296);p[(q+64>>>9<<4)+15]=(d<<8|d>>>24)&16711935|(d<<24|d>>>8)&4278255360;p[(q+64>>>9<<4)+14]=(n<<8|n>>>24)&16711935|(n<<24|n>>>8)&4278255360;l.sigBytes=4*(p.length+1);this._process();l=this._hash;p=l.words;for(n=0;4>n;n++){q=p[n],p[n]=(q<<8|q>>>24)&16711935|(q<<24|q>>>8)&4278255360}return l},clone:function(){var d=k.clone.call(this);d._hash=this._hash.clone();return d}});o.MD5=k._createHelper(a);o.HmacMD5=k._createHmacHelper(a)})(Math);(function(){var b=CryptoJS,a=b.lib,e=a.Base,f=a.WordArray,a=b.algo,c=a.EvpKDF=e.extend({cfg:e.extend({keySize:4,hasher:a.MD5,iterations:1}),init:function(g){this.cfg=this.cfg.extend(g)},compute:function(k,i){for(var h=this.cfg,o=h.hasher.create(),m=f.create(),q=m.words,g=h.keySize,h=h.iterations;q.length<g;){j&&o.update(j);var j=o.update(k).finalize(i);o.reset();for(var n=1;n<h;n++){j=o.finalize(j),o.reset()}m.concat(j)}m.sigBytes=4*g;return m}});b.EvpKDF=function(h,g,i){return c.create(i).compute(h,g)}})();CryptoJS.lib.Cipher||function(C){var j=CryptoJS,m=j.lib,i=m.Base,h=m.WordArray,D=m.BufferedBlockAlgorithm,g=j.enc.Base64,A=j.algo.EvpKDF,B=m.Cipher=D.extend({cfg:i.extend(),createEncryptor:function(b,c){return this.create(this._ENC_XFORM_MODE,b,c)},createDecryptor:function(b,c){return this.create(this._DEC_XFORM_MODE,b,c)},init:function(d,e,c){this.cfg=this.cfg.extend(c);this._xformMode=d;this._key=e;this.reset()},reset:function(){D.reset.call(this);this._doReset()},process:function(b){this._append(b);return this._process()},finalize:function(b){b&&this._append(b);return this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(a){return{encrypt:function(d,c,l){return("string"==typeof c?o:y).encrypt(a,d,c,l)},decrypt:function(d,c,l){return("string"==typeof c?o:y).decrypt(a,d,c,l)}}}});m.StreamCipher=B.extend({_doFinalize:function(){return this._process(!0)},blockSize:1});var t=j.mode={},z=function(l,n,d){var q=this._iv;q?this._iv=C:q=this._prevBlock;for(var p=0;p<d;p++){l[n+p]^=q[p]}},f=(m.BlockCipherMode=i.extend({createEncryptor:function(b,c){return this.Encryptor.create(b,c)},createDecryptor:function(b,c){return this.Decryptor.create(b,c)},init:function(b,c){this._cipher=b;this._iv=c}})).extend();f.Encryptor=f.extend({processBlock:function(e,l){var d=this._cipher,n=d.blockSize;z.call(this,e,l,n);d.encryptBlock(e,l);this._prevBlock=e.slice(l,l+n)}});f.Decryptor=f.extend({processBlock:function(n,l){var r=this._cipher,p=r.blockSize,q=n.slice(l,l+p);r.decryptBlock(n,l);z.call(this,n,l,p);this._prevBlock=q}});t=t.CBC=f;f=(j.pad={}).Pkcs7={pad:function(q,n){for(var u=4*n,u=u-q.sigBytes%u,r=u<<24|u<<16|u<<8|u,s=[],p=0;p<u;p+=4){s.push(r)}u=h.create(s,u);q.concat(u)},unpad:function(b){b.sigBytes-=b.words[b.sigBytes-1>>>2]&255}};m.BlockCipher=B.extend({cfg:B.cfg.extend({mode:t,padding:f}),reset:function(){B.reset.call(this);var e=this.cfg,l=e.iv,e=e.mode;if(this._xformMode==this._ENC_XFORM_MODE){var d=e.createEncryptor}else{d=e.createDecryptor,this._minBufferSize=1}this._mode=d.call(e,this,l&&l.words)},_doProcessBlock:function(b,d){this._mode.processBlock(b,d)},_doFinalize:function(){var b=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){b.pad(this._data,this.blockSize);var d=this._process(!0)}else{d=this._process(!0),b.unpad(d)}return d},blockSize:4});var k=m.CipherParams=i.extend({init:function(b){this.mixIn(b)},toString:function(b){return(b||this.formatter).stringify(this)}}),t=(j.format={}).OpenSSL={stringify:function(b){var d=b.ciphertext;b=b.salt;return(b?h.create([1398893684,1701076831]).concat(b).concat(d):d).toString(g)},parse:function(e){e=g.parse(e);var l=e.words;if(1398893684==l[0]&&1701076831==l[1]){var d=h.create(l.slice(2,4));l.splice(0,4);e.sigBytes-=16}return k.create({ciphertext:e,salt:d})}},y=m.SerializableCipher=i.extend({cfg:i.extend({format:t}),encrypt:function(p,r,e,q){q=this.cfg.extend(q);var n=p.createEncryptor(e,q);r=n.finalize(r);n=n.cfg;return k.create({ciphertext:r,key:e,iv:n.iv,algorithm:p,mode:n.mode,padding:n.padding,blockSize:p.blockSize,formatter:q.format})},decrypt:function(l,p,d,n){n=this.cfg.extend(n);p=this._parse(p,n.format);return l.createDecryptor(d,n).finalize(p.ciphertext)},_parse:function(b,d){return"string"==typeof b?d.parse(b,this):b}}),j=(j.kdf={}).OpenSSL={execute:function(l,p,e,n){n||(n=h.random(8));l=A.create({keySize:p+e}).compute(l,n);e=h.create(l.words.slice(p),4*e);l.sigBytes=4*p;return k.create({key:l,iv:e,salt:n})}},o=m.PasswordBasedCipher=y.extend({cfg:y.cfg.extend({kdf:j}),encrypt:function(p,a,l,n){n=this.cfg.extend(n);l=n.kdf.execute(l,p.keySize,p.ivSize);n.iv=l.iv;p=y.encrypt.call(this,p,a,l.key,n);p.mixIn(l);return p},decrypt:function(p,a,l,n){n=this.cfg.extend(n);a=this._parse(a,n.format);l=n.kdf.execute(l,p.keySize,p.ivSize,a.salt);n.iv=l.iv;return y.decrypt.call(this,p,a,l.key,n)}})
}();(function(){function o(d,l){var n=(this._lBlock>>>d^this._rBlock)&l;this._rBlock^=n;this._lBlock^=n<<d}function g(d,l){var n=(this._rBlock>>>d^this._lBlock)&l;this._lBlock^=n;this._rBlock^=n<<d}var h=CryptoJS,f=h.lib,e=f.WordArray,f=f.BlockCipher,t=h.algo,c=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],k=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],m=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],i=[{"0":8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{"0":1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{"0":260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{"0":2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{"0":128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{"0":268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{"0":1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{"0":134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],j=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],a=t.DES=f.extend({_doReset:function(){for(var n=this._key.words,q=[],u=0;
56>u;u++){var s=c[u]-1;q[u]=n[s>>>5]>>>31-s%32&1}n=this._subKeys=[];for(s=0;16>s;s++){for(var r=n[s]=[],p=m[s],u=0;24>u;u++){r[u/6|0]|=q[(k[u]-1+p)%28]<<31-u%6,r[4+(u/6|0)]|=q[28+(k[u+24]-1+p)%28]<<31-u%6}r[0]=r[0]<<1|r[0]>>>31;for(u=1;7>u;u++){r[u]>>>=4*(u-1)+3}r[7]=r[7]<<5|r[7]>>>27}q=this._invSubKeys=[];for(u=0;16>u;u++){q[u]=n[15-u]}},encryptBlock:function(d,l){this._doCryptBlock(d,l,this._subKeys)},decryptBlock:function(d,l){this._doCryptBlock(d,l,this._invSubKeys)},_doCryptBlock:function(w,z,y){this._lBlock=w[z];this._rBlock=w[z+1];o.call(this,4,252645135);o.call(this,16,65535);g.call(this,2,858993459);g.call(this,8,16711935);o.call(this,1,1431655765);for(var x=0;16>x;x++){for(var v=y[x],u=this._lBlock,s=this._rBlock,l=0,b=0;8>b;b++){l|=i[b][((s^v[b])&j[b])>>>0]}this._lBlock=s;this._rBlock=u^l}y=this._lBlock;this._lBlock=this._rBlock;this._rBlock=y;o.call(this,1,1431655765);g.call(this,8,16711935);g.call(this,2,858993459);o.call(this,16,65535);o.call(this,4,252645135);w[z]=this._lBlock;w[z+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});h.DES=f._createHelper(a);t=t.TripleDES=f.extend({_doReset:function(){var d=this._key.words;this._des1=a.createEncryptor(e.create(d.slice(0,2)));this._des2=a.createEncryptor(e.create(d.slice(2,4)));this._des3=a.createEncryptor(e.create(d.slice(4,6)))},encryptBlock:function(d,l){this._des1.encryptBlock(d,l);this._des2.decryptBlock(d,l);this._des3.encryptBlock(d,l)},decryptBlock:function(d,l){this._des3.decryptBlock(d,l);this._des2.encryptBlock(d,l);this._des1.decryptBlock(d,l)},keySize:6,ivSize:2,blockSize:2});h.TripleDES=f._createHelper(t)})();var DES3={iv:function(){return $.WebSite.formatDate(new Date(),"yyyyMMdd")},encrypt:function(b,c,a){if(c){return(CryptoJS.TripleDES.encrypt(b,CryptoJS.enc.Utf8.parse(c),{iv:CryptoJS.enc.Utf8.parse(a||DES3.iv()),mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7})).toString()}return""},decrypt:function(b,c,a){if(c){return CryptoJS.enc.Utf8.stringify(CryptoJS.TripleDES.decrypt(b,CryptoJS.enc.Utf8.parse(c),{iv:CryptoJS.enc.Utf8.parse(a||DES3.iv()),mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7})).toString()}return""}};

我们随便找个网页把这段代码贴进去,并把刚刚postman中得到的result和secretKey填进去,可以发现解密代码会报错
在这里插入图片描述
可以看到是没有formatDate属性。点击我上图框的位置找到报错的js
在这里插入图片描述
可以看到在是因为取不到 $.webSite.formateDate。现在我们返回文书网的website.js搜索formateDate,可以看到formateDate函数
在这里插入图片描述
那么我们修改js代码,把

iv: function() {
        return $.WebSite.formatDate(new Date(), "yyyyMMdd")
    },

改为

	iv: function() {
        return myformatDate(new Date(), "yyyyMMdd")
    },

并在js中添加如下方法

function myformatDate(v, format) {
            if (!v)
                return "";
            var d = v;
            if (typeof v === 'string') {
                if (v.indexOf("/Date(") > -1)
                    d = new Date(parseInt(v.replace("/Date(", "").replace(")/", ""), 10));
                else
                    d = new Date(Date.parse(v.replace(/-/g, "/").replace("T", " ").split(".")[0]));
                // 用来处理出现毫秒的情况,截取掉.xxx,否则会出错
            } else if (typeof v === "number") {
                d = new Date(v);
            }
            var o = {
                "M+": d.getMonth() + 1,
                // month
                "d+": d.getDate(),
                // day
                "h+": d.getHours(),
                // hour
                "m+": d.getMinutes(),
                // minute
                "s+": d.getSeconds(),
                // second
                "q+": Math.floor((d.getMonth() + 3) / 3),
                // quarter
                "S": d.getMilliseconds()// millisecond
            };
            format = format || "yyyy-MM-dd";
            if (/(y+)/.test(format)) {
                format = format.replace(RegExp.$1, (d.getFullYear() + "").substr(4 - RegExp.$1.length));
            }
            for (var k in o) {
                if (new RegExp("(" + k + ")").test(format)) {
                    format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
                }
            }
            return format;
        }

更改后完成js代码如下

var CryptoJS=CryptoJS||function(y,h){var j={},g=j.lib={},f=function(){},z=g.Base={extend:function(b){f.prototype=this;var d=new f;b&&d.mixIn(b);d.hasOwnProperty("init")||(d.init=function(){d.$super.init.apply(this,arguments)});d.init.prototype=d;d.$super=this;return d},create:function(){var b=this.extend();b.init.apply(b,arguments);return b},init:function(){},mixIn:function(b){for(var d in b){b.hasOwnProperty(d)&&(this[d]=b[d])}b.hasOwnProperty("toString")&&(this.toString=b.toString)},clone:function(){return this.init.prototype.extend(this)}},c=g.WordArray=z.extend({init:function(b,d){b=this.words=b||[];this.sigBytes=d!=h?d:4*b.length},toString:function(b){return(b||t).stringify(this)},concat:function(d){var n=this.words,b=d.words,l=this.sigBytes;d=d.sigBytes;this.clamp();if(l%4){for(var e=0;e<d;e++){n[l+e>>>2]|=(b[e>>>2]>>>24-8*(e%4)&255)<<24-8*((l+e)%4)}}else{if(65535<b.length){for(e=0;e<d;e+=4){n[l+e>>>2]=b[e>>>2]}}else{n.push.apply(n,b)}}this.sigBytes+=d;return this},clamp:function(){var b=this.words,d=this.sigBytes;b[d>>>2]&=4294967295<<32-8*(d%4);b.length=y.ceil(d/4)},clone:function(){var b=z.clone.call(this);b.words=this.words.slice(0);return b},random:function(d){for(var e=[],b=0;b<d;b+=4){e.push(4294967296*y.random()|0)}return new c.init(e,d)}}),o=j.enc={},t=o.Hex={stringify:function(d){var n=d.words;d=d.sigBytes;for(var b=[],l=0;l<d;l++){var e=n[l>>>2]>>>24-8*(l%4)&255;b.push((e>>>4).toString(16));b.push((e&15).toString(16))}return b.join("")},parse:function(d){for(var l=d.length,b=[],e=0;e<l;e+=2){b[e>>>3]|=parseInt(d.substr(e,2),16)<<24-4*(e%8)}return new c.init(b,l/2)}},k=o.Latin1={stringify:function(d){var l=d.words;d=d.sigBytes;for(var b=[],e=0;e<d;e++){b.push(String.fromCharCode(l[e>>>2]>>>24-8*(e%4)&255))}return b.join("")},parse:function(d){for(var l=d.length,b=[],e=0;e<l;e++){b[e>>>2]|=(d.charCodeAt(e)&255)<<24-8*(e%4)}return new c.init(b,l)}},m=o.Utf8={stringify:function(b){try{return decodeURIComponent(escape(k.stringify(b)))}catch(d){throw Error("Malformed UTF-8 data")}},parse:function(b){return k.parse(unescape(encodeURIComponent(b)))}},a=g.BufferedBlockAlgorithm=z.extend({reset:function(){this._data=new c.init;this._nDataBytes=0},_append:function(b){"string"==typeof b&&(b=m.parse(b));this._data.concat(b);this._nDataBytes+=b.sigBytes},_process:function(n){var s=this._data,l=s.words,q=s.sigBytes,p=this.blockSize,d=q/(4*p),d=n?y.ceil(d):y.max((d|0)-this._minBufferSize,0);n=d*p;q=y.min(4*n,q);if(n){for(var r=0;r<n;r+=p){this._doProcessBlock(l,r)}r=l.splice(0,n);s.sigBytes-=q}return new c.init(r,q)},clone:function(){var b=z.clone.call(this);b._data=this._data.clone();return b},_minBufferSize:0});g.Hasher=a.extend({cfg:z.extend(),init:function(b){this.cfg=this.cfg.extend(b);this.reset()},reset:function(){a.reset.call(this);this._doReset()},update:function(b){this._append(b);this._process();return this},finalize:function(b){b&&this._append(b);return this._doFinalize()},blockSize:16,_createHelper:function(b){return function(e,d){return(new b.init(d)).finalize(e)}},_createHmacHelper:function(b){return function(e,d){return(new i.HMAC.init(b,d)).finalize(e)}}});var i=j.algo={};return j}(Math);(function(){var b=CryptoJS,a=b.lib.WordArray;b.enc.Base64={stringify:function(i){var j=i.words,e=i.sigBytes,g=this._map;i.clamp();i=[];for(var h=0;h<e;h+=3){for(var c=(j[h>>>2]>>>24-8*(h%4)&255)<<16|(j[h+1>>>2]>>>24-8*((h+1)%4)&255)<<8|j[h+2>>>2]>>>24-8*((h+2)%4)&255,f=0;4>f&&h+0.75*f<e;f++){i.push(g.charAt(c>>>6*(3-f)&63))}}if(j=g.charAt(64)){for(;i.length%4;){i.push(j)}}return i.join("")},parse:function(j){var k=j.length,i=this._map,g=i.charAt(64);g&&(g=j.indexOf(g),-1!=g&&(k=g));for(var g=[],h=0,e=0;e<k;e++){if(e%4){var f=i.indexOf(j.charAt(e-1))<<2*(e%4),c=i.indexOf(j.charAt(e))>>>6-2*(e%4);g[h>>>2]|=(f|c)<<24-8*(h%4);h++}}return a.create(g,h)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})();(function(m){function f(l,r,n,s,d,q,p){l=l+(r&n|~r&s)+d+p;return(l<<q|l>>>32-q)+r}function g(l,r,n,s,d,q,p){l=l+(r&s|n&~s)+d+p;return(l<<q|l>>>32-q)+r}function e(l,r,n,s,d,q,p){l=l+(r^n^s)+d+p;return(l<<q|l>>>32-q)+r}function c(l,r,n,s,d,q,p){l=l+(n^(r|~s))+d+p;return(l<<q|l>>>32-q)+r}for(var o=CryptoJS,a=o.lib,j=a.WordArray,k=a.Hasher,a=o.algo,h=[],i=0;64>i;i++){h[i]=4294967296*m.abs(m.sin(i+1))|0}a=a.MD5=k.extend({_doReset:function(){this._hash=new j.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(J,T){for(var V=0;16>V;V++){var U=T+V,N=J[U];J[U]=(N<<8|N>>>24)&16711935|(N<<24|N>>>8)&4278255360}var V=this._hash.words,U=J[T+0],N=J[T+1],S=J[T+2],F=J[T+3],d=J[T+4],L=J[T+5],H=J[T+6],n=J[T+7],p=J[T+8],E=J[T+9],l=J[T+10],b=J[T+11],M=J[T+12],K=J[T+13],I=J[T+14],G=J[T+15],R=V[0],Q=V[1],P=V[2],O=V[3],R=f(R,Q,P,O,U,7,h[0]),O=f(O,R,Q,P,N,12,h[1]),P=f(P,O,R,Q,S,17,h[2]),Q=f(Q,P,O,R,F,22,h[3]),R=f(R,Q,P,O,d,7,h[4]),O=f(O,R,Q,P,L,12,h[5]),P=f(P,O,R,Q,H,17,h[6]),Q=f(Q,P,O,R,n,22,h[7]),R=f(R,Q,P,O,p,7,h[8]),O=f(O,R,Q,P,E,12,h[9]),P=f(P,O,R,Q,l,17,h[10]),Q=f(Q,P,O,R,b,22,h[11]),R=f(R,Q,P,O,M,7,h[12]),O=f(O,R,Q,P,K,12,h[13]),P=f(P,O,R,Q,I,17,h[14]),Q=f(Q,P,O,R,G,22,h[15]),R=g(R,Q,P,O,N,5,h[16]),O=g(O,R,Q,P,H,9,h[17]),P=g(P,O,R,Q,b,14,h[18]),Q=g(Q,P,O,R,U,20,h[19]),R=g(R,Q,P,O,L,5,h[20]),O=g(O,R,Q,P,l,9,h[21]),P=g(P,O,R,Q,G,14,h[22]),Q=g(Q,P,O,R,d,20,h[23]),R=g(R,Q,P,O,E,5,h[24]),O=g(O,R,Q,P,I,9,h[25]),P=g(P,O,R,Q,F,14,h[26]),Q=g(Q,P,O,R,p,20,h[27]),R=g(R,Q,P,O,K,5,h[28]),O=g(O,R,Q,P,S,9,h[29]),P=g(P,O,R,Q,n,14,h[30]),Q=g(Q,P,O,R,M,20,h[31]),R=e(R,Q,P,O,L,4,h[32]),O=e(O,R,Q,P,p,11,h[33]),P=e(P,O,R,Q,b,16,h[34]),Q=e(Q,P,O,R,I,23,h[35]),R=e(R,Q,P,O,N,4,h[36]),O=e(O,R,Q,P,d,11,h[37]),P=e(P,O,R,Q,n,16,h[38]),Q=e(Q,P,O,R,l,23,h[39]),R=e(R,Q,P,O,K,4,h[40]),O=e(O,R,Q,P,U,11,h[41]),P=e(P,O,R,Q,F,16,h[42]),Q=e(Q,P,O,R,H,23,h[43]),R=e(R,Q,P,O,E,4,h[44]),O=e(O,R,Q,P,M,11,h[45]),P=e(P,O,R,Q,G,16,h[46]),Q=e(Q,P,O,R,S,23,h[47]),R=c(R,Q,P,O,U,6,h[48]),O=c(O,R,Q,P,n,10,h[49]),P=c(P,O,R,Q,I,15,h[50]),Q=c(Q,P,O,R,L,21,h[51]),R=c(R,Q,P,O,M,6,h[52]),O=c(O,R,Q,P,F,10,h[53]),P=c(P,O,R,Q,l,15,h[54]),Q=c(Q,P,O,R,N,21,h[55]),R=c(R,Q,P,O,p,6,h[56]),O=c(O,R,Q,P,G,10,h[57]),P=c(P,O,R,Q,H,15,h[58]),Q=c(Q,P,O,R,K,21,h[59]),R=c(R,Q,P,O,d,6,h[60]),O=c(O,R,Q,P,b,10,h[61]),P=c(P,O,R,Q,S,15,h[62]),Q=c(Q,P,O,R,E,21,h[63]);
V[0]=V[0]+R|0;V[1]=V[1]+Q|0;V[2]=V[2]+P|0;V[3]=V[3]+O|0},_doFinalize:function(){var l=this._data,p=l.words,n=8*this._nDataBytes,q=8*l.sigBytes;p[q>>>5]|=128<<24-q%32;var d=m.floor(n/4294967296);p[(q+64>>>9<<4)+15]=(d<<8|d>>>24)&16711935|(d<<24|d>>>8)&4278255360;p[(q+64>>>9<<4)+14]=(n<<8|n>>>24)&16711935|(n<<24|n>>>8)&4278255360;l.sigBytes=4*(p.length+1);this._process();l=this._hash;p=l.words;for(n=0;4>n;n++){q=p[n],p[n]=(q<<8|q>>>24)&16711935|(q<<24|q>>>8)&4278255360}return l},clone:function(){var d=k.clone.call(this);d._hash=this._hash.clone();return d}});o.MD5=k._createHelper(a);o.HmacMD5=k._createHmacHelper(a)})(Math);(function(){var b=CryptoJS,a=b.lib,e=a.Base,f=a.WordArray,a=b.algo,c=a.EvpKDF=e.extend({cfg:e.extend({keySize:4,hasher:a.MD5,iterations:1}),init:function(g){this.cfg=this.cfg.extend(g)},compute:function(k,i){for(var h=this.cfg,o=h.hasher.create(),m=f.create(),q=m.words,g=h.keySize,h=h.iterations;q.length<g;){j&&o.update(j);var j=o.update(k).finalize(i);o.reset();for(var n=1;n<h;n++){j=o.finalize(j),o.reset()}m.concat(j)}m.sigBytes=4*g;return m}});b.EvpKDF=function(h,g,i){return c.create(i).compute(h,g)}})();CryptoJS.lib.Cipher||function(C){var j=CryptoJS,m=j.lib,i=m.Base,h=m.WordArray,D=m.BufferedBlockAlgorithm,g=j.enc.Base64,A=j.algo.EvpKDF,B=m.Cipher=D.extend({cfg:i.extend(),createEncryptor:function(b,c){return this.create(this._ENC_XFORM_MODE,b,c)},createDecryptor:function(b,c){return this.create(this._DEC_XFORM_MODE,b,c)},init:function(d,e,c){this.cfg=this.cfg.extend(c);this._xformMode=d;this._key=e;this.reset()},reset:function(){D.reset.call(this);this._doReset()},process:function(b){this._append(b);return this._process()},finalize:function(b){b&&this._append(b);return this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(a){return{encrypt:function(d,c,l){return("string"==typeof c?o:y).encrypt(a,d,c,l)},decrypt:function(d,c,l){return("string"==typeof c?o:y).decrypt(a,d,c,l)}}}});m.StreamCipher=B.extend({_doFinalize:function(){return this._process(!0)},blockSize:1});var t=j.mode={},z=function(l,n,d){var q=this._iv;q?this._iv=C:q=this._prevBlock;for(var p=0;p<d;p++){l[n+p]^=q[p]}},f=(m.BlockCipherMode=i.extend({createEncryptor:function(b,c){return this.Encryptor.create(b,c)},createDecryptor:function(b,c){return this.Decryptor.create(b,c)},init:function(b,c){this._cipher=b;this._iv=c}})).extend();f.Encryptor=f.extend({processBlock:function(e,l){var d=this._cipher,n=d.blockSize;z.call(this,e,l,n);d.encryptBlock(e,l);this._prevBlock=e.slice(l,l+n)}});f.Decryptor=f.extend({processBlock:function(n,l){var r=this._cipher,p=r.blockSize,q=n.slice(l,l+p);r.decryptBlock(n,l);z.call(this,n,l,p);this._prevBlock=q}});t=t.CBC=f;f=(j.pad={}).Pkcs7={pad:function(q,n){for(var u=4*n,u=u-q.sigBytes%u,r=u<<24|u<<16|u<<8|u,s=[],p=0;p<u;p+=4){s.push(r)}u=h.create(s,u);q.concat(u)},unpad:function(b){b.sigBytes-=b.words[b.sigBytes-1>>>2]&255}};m.BlockCipher=B.extend({cfg:B.cfg.extend({mode:t,padding:f}),reset:function(){B.reset.call(this);var e=this.cfg,l=e.iv,e=e.mode;if(this._xformMode==this._ENC_XFORM_MODE){var d=e.createEncryptor}else{d=e.createDecryptor,this._minBufferSize=1}this._mode=d.call(e,this,l&&l.words)},_doProcessBlock:function(b,d){this._mode.processBlock(b,d)},_doFinalize:function(){var b=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){b.pad(this._data,this.blockSize);var d=this._process(!0)}else{d=this._process(!0),b.unpad(d)}return d},blockSize:4});var k=m.CipherParams=i.extend({init:function(b){this.mixIn(b)},toString:function(b){return(b||this.formatter).stringify(this)}}),t=(j.format={}).OpenSSL={stringify:function(b){var d=b.ciphertext;b=b.salt;return(b?h.create([1398893684,1701076831]).concat(b).concat(d):d).toString(g)},parse:function(e){e=g.parse(e);var l=e.words;if(1398893684==l[0]&&1701076831==l[1]){var d=h.create(l.slice(2,4));l.splice(0,4);e.sigBytes-=16}return k.create({ciphertext:e,salt:d})}},y=m.SerializableCipher=i.extend({cfg:i.extend({format:t}),encrypt:function(p,r,e,q){q=this.cfg.extend(q);var n=p.createEncryptor(e,q);r=n.finalize(r);n=n.cfg;return k.create({ciphertext:r,key:e,iv:n.iv,algorithm:p,mode:n.mode,padding:n.padding,blockSize:p.blockSize,formatter:q.format})},decrypt:function(l,p,d,n){n=this.cfg.extend(n);p=this._parse(p,n.format);return l.createDecryptor(d,n).finalize(p.ciphertext)},_parse:function(b,d){return"string"==typeof b?d.parse(b,this):b}}),j=(j.kdf={}).OpenSSL={execute:function(l,p,e,n){n||(n=h.random(8));l=A.create({keySize:p+e}).compute(l,n);e=h.create(l.words.slice(p),4*e);l.sigBytes=4*p;return k.create({key:l,iv:e,salt:n})}},o=m.PasswordBasedCipher=y.extend({cfg:y.cfg.extend({kdf:j}),encrypt:function(p,a,l,n){n=this.cfg.extend(n);l=n.kdf.execute(l,p.keySize,p.ivSize);n.iv=l.iv;p=y.encrypt.call(this,p,a,l.key,n);p.mixIn(l);return p},decrypt:function(p,a,l,n){n=this.cfg.extend(n);a=this._parse(a,n.format);l=n.kdf.execute(l,p.keySize,p.ivSize,a.salt);n.iv=l.iv;return y.decrypt.call(this,p,a,l.key,n)}})
}();(function(){function o(d,l){var n=(this._lBlock>>>d^this._rBlock)&l;this._rBlock^=n;this._lBlock^=n<<d}function g(d,l){var n=(this._rBlock>>>d^this._lBlock)&l;this._lBlock^=n;this._rBlock^=n<<d}var h=CryptoJS,f=h.lib,e=f.WordArray,f=f.BlockCipher,t=h.algo,c=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],k=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],m=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],i=[{"0":8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{"0":1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{"0":260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{"0":2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{"0":128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{"0":268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{"0":1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{"0":134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],j=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],a=t.DES=f.extend({_doReset:function(){for(var n=this._key.words,q=[],u=0;
56>u;u++){var s=c[u]-1;q[u]=n[s>>>5]>>>31-s%32&1}n=this._subKeys=[];for(s=0;16>s;s++){for(var r=n[s]=[],p=m[s],u=0;24>u;u++){r[u/6|0]|=q[(k[u]-1+p)%28]<<31-u%6,r[4+(u/6|0)]|=q[28+(k[u+24]-1+p)%28]<<31-u%6}r[0]=r[0]<<1|r[0]>>>31;for(u=1;7>u;u++){r[u]>>>=4*(u-1)+3}r[7]=r[7]<<5|r[7]>>>27}q=this._invSubKeys=[];for(u=0;16>u;u++){q[u]=n[15-u]}},encryptBlock:function(d,l){this._doCryptBlock(d,l,this._subKeys)},decryptBlock:function(d,l){this._doCryptBlock(d,l,this._invSubKeys)},_doCryptBlock:function(w,z,y){this._lBlock=w[z];this._rBlock=w[z+1];o.call(this,4,252645135);o.call(this,16,65535);g.call(this,2,858993459);g.call(this,8,16711935);o.call(this,1,1431655765);for(var x=0;16>x;x++){for(var v=y[x],u=this._lBlock,s=this._rBlock,l=0,b=0;8>b;b++){l|=i[b][((s^v[b])&j[b])>>>0]}this._lBlock=s;this._rBlock=u^l}y=this._lBlock;this._lBlock=this._rBlock;this._rBlock=y;o.call(this,1,1431655765);g.call(this,8,16711935);g.call(this,2,858993459);o.call(this,16,65535);o.call(this,4,252645135);w[z]=this._lBlock;w[z+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});h.DES=f._createHelper(a);t=t.TripleDES=f.extend({_doReset:function(){var d=this._key.words;this._des1=a.createEncryptor(e.create(d.slice(0,2)));this._des2=a.createEncryptor(e.create(d.slice(2,4)));this._des3=a.createEncryptor(e.create(d.slice(4,6)))},encryptBlock:function(d,l){this._des1.encryptBlock(d,l);this._des2.decryptBlock(d,l);this._des3.encryptBlock(d,l)},decryptBlock:function(d,l){this._des3.decryptBlock(d,l);this._des2.encryptBlock(d,l);this._des1.decryptBlock(d,l)},keySize:6,ivSize:2,blockSize:2});h.TripleDES=f._createHelper(t)})();function myformatDate(v,format){if(!v){return""}var d=v;if(typeof v==="string"){if(v.indexOf("/Date(")>-1){d=new Date(parseInt(v.replace("/Date(","").replace(")/",""),10))}else{d=new Date(Date.parse(v.replace(/-/g,"/").replace("T"," ").split(".")[0]))}}else{if(typeof v==="number"){d=new Date(v)}}var o={"M+":d.getMonth()+1,"d+":d.getDate(),"h+":d.getHours(),"m+":d.getMinutes(),"s+":d.getSeconds(),"q+":Math.floor((d.getMonth()+3)/3),"S":d.getMilliseconds()};format=format||"yyyy-MM-dd";if(/(y+)/.test(format)){format=format.replace(RegExp.$1,(d.getFullYear()+"").substr(4-RegExp.$1.length))}for(var k in o){if(new RegExp("("+k+")").test(format)){format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+o[k]).substr((""+o[k]).length))}}return format}var DES3={iv:function(){return myformatDate(new Date(),"yyyyMMdd")},encrypt:function(b,c,a){if(c){return(CryptoJS.TripleDES.encrypt(b,CryptoJS.enc.Utf8.parse(c),{iv:CryptoJS.enc.Utf8.parse(a||DES3.iv()),mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7})).toString()}return""},decrypt:function(b,c,a){if(c){return CryptoJS.enc.Utf8.stringify(CryptoJS.TripleDES.decrypt(b,CryptoJS.enc.Utf8.parse(c),{iv:CryptoJS.enc.Utf8.parse(a||DES3.iv()),mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7})).toString()}return""}};

我们再随便找个网页,并调用DES3.decrypt(“xxx”,“xxx”),可以发现已经能解密成功了
在这里插入图片描述
ok,到这里解密就完成了。现在我们回过头来看一下请求,再次在postman中执行刚刚的请求,可以发现已经不通了
在这里插入图片描述

经过与成功的请求对比可以发现参数ciphertext、__RequestVerificationToken发生了改变,那么我们研究下这两个参数是怎么生成的。

经过全局搜索可以发现ciphertext生成的位置
在这里插入图片描述
可以发现strToBinary.js就是用来生成ciphertext的。
全局搜索__RequestVerificationToken很容易发现生成位置
在这里插入图片描述
通过断点调试可以找到random函数
在这里插入图片描述

到这里请求已经已经能发送成功并解密成功了,但这个返回的只是文书的简略信息以及docId,并没有文书全部内容,因此我们还需要再分析如何通过返回的docId来爬取文书全文。鉴于获取文书全文的加解密方法都一致我这里不做赘述,需要的同学可以直接代码

思路整理

1、登陆网站获取cookie
2、通过上述函数计算出ciphertext与__RequestVerificationToken的值,并封装请求
3、拿到响应后通过上述解密函数进行数据解密拿到docId
4、通过docId获取文书全部内容

Coding

首先把上述的js整理在一起,完整js压缩后如下

var CryptoJS=CryptoJS||function(y,h){var j={},g=j.lib={},f=function(){},z=g.Base={extend:function(b){f.prototype=this;var d=new f;b&&d.mixIn(b);d.hasOwnProperty("init")||(d.init=function(){d.$super.init.apply(this,arguments)});d.init.prototype=d;d.$super=this;return d},create:function(){var b=this.extend();b.init.apply(b,arguments);return b},init:function(){},mixIn:function(b){for(var d in b){b.hasOwnProperty(d)&&(this[d]=b[d])}b.hasOwnProperty("toString")&&(this.toString=b.toString)},clone:function(){return this.init.prototype.extend(this)}},c=g.WordArray=z.extend({init:function(b,d){b=this.words=b||[];this.sigBytes=d!=h?d:4*b.length},toString:function(b){return(b||t).stringify(this)},concat:function(d){var n=this.words,b=d.words,l=this.sigBytes;d=d.sigBytes;this.clamp();if(l%4){for(var e=0;e<d;e++){n[l+e>>>2]|=(b[e>>>2]>>>24-8*(e%4)&255)<<24-8*((l+e)%4)}}else{if(65535<b.length){for(e=0;e<d;e+=4){n[l+e>>>2]=b[e>>>2]}}else{n.push.apply(n,b)}}this.sigBytes+=d;return this},clamp:function(){var b=this.words,d=this.sigBytes;b[d>>>2]&=4294967295<<32-8*(d%4);b.length=y.ceil(d/4)},clone:function(){var b=z.clone.call(this);b.words=this.words.slice(0);return b},random:function(d){for(var e=[],b=0;b<d;b+=4){e.push(4294967296*y.random()|0)}return new c.init(e,d)}}),o=j.enc={},t=o.Hex={stringify:function(d){var n=d.words;d=d.sigBytes;for(var b=[],l=0;l<d;l++){var e=n[l>>>2]>>>24-8*(l%4)&255;b.push((e>>>4).toString(16));b.push((e&15).toString(16))}return b.join("")},parse:function(d){for(var l=d.length,b=[],e=0;e<l;e+=2){b[e>>>3]|=parseInt(d.substr(e,2),16)<<24-4*(e%8)}return new c.init(b,l/2)}},k=o.Latin1={stringify:function(d){var l=d.words;d=d.sigBytes;for(var b=[],e=0;e<d;e++){b.push(String.fromCharCode(l[e>>>2]>>>24-8*(e%4)&255))}return b.join("")},parse:function(d){for(var l=d.length,b=[],e=0;e<l;e++){b[e>>>2]|=(d.charCodeAt(e)&255)<<24-8*(e%4)}return new c.init(b,l)}},m=o.Utf8={stringify:function(b){try{return decodeURIComponent(escape(k.stringify(b)))}catch(d){throw Error("Malformed UTF-8 data")}},parse:function(b){return k.parse(unescape(encodeURIComponent(b)))}},a=g.BufferedBlockAlgorithm=z.extend({reset:function(){this._data=new c.init;this._nDataBytes=0},_append:function(b){"string"==typeof b&&(b=m.parse(b));this._data.concat(b);this._nDataBytes+=b.sigBytes},_process:function(n){var s=this._data,l=s.words,q=s.sigBytes,p=this.blockSize,d=q/(4*p),d=n?y.ceil(d):y.max((d|0)-this._minBufferSize,0);n=d*p;q=y.min(4*n,q);if(n){for(var r=0;r<n;r+=p){this._doProcessBlock(l,r)}r=l.splice(0,n);s.sigBytes-=q}return new c.init(r,q)},clone:function(){var b=z.clone.call(this);b._data=this._data.clone();return b},_minBufferSize:0});g.Hasher=a.extend({cfg:z.extend(),init:function(b){this.cfg=this.cfg.extend(b);this.reset()},reset:function(){a.reset.call(this);this._doReset()},update:function(b){this._append(b);this._process();return this},finalize:function(b){b&&this._append(b);return this._doFinalize()},blockSize:16,_createHelper:function(b){return function(e,d){return(new b.init(d)).finalize(e)}},_createHmacHelper:function(b){return function(e,d){return(new i.HMAC.init(b,d)).finalize(e)}}});var i=j.algo={};return j}(Math);(function(){var b=CryptoJS,a=b.lib.WordArray;b.enc.Base64={stringify:function(i){var j=i.words,e=i.sigBytes,g=this._map;i.clamp();i=[];for(var h=0;h<e;h+=3){for(var c=(j[h>>>2]>>>24-8*(h%4)&255)<<16|(j[h+1>>>2]>>>24-8*((h+1)%4)&255)<<8|j[h+2>>>2]>>>24-8*((h+2)%4)&255,f=0;4>f&&h+0.75*f<e;f++){i.push(g.charAt(c>>>6*(3-f)&63))}}if(j=g.charAt(64)){for(;i.length%4;){i.push(j)}}return i.join("")},parse:function(j){var k=j.length,i=this._map,g=i.charAt(64);g&&(g=j.indexOf(g),-1!=g&&(k=g));for(var g=[],h=0,e=0;e<k;e++){if(e%4){var f=i.indexOf(j.charAt(e-1))<<2*(e%4),c=i.indexOf(j.charAt(e))>>>6-2*(e%4);g[h>>>2]|=(f|c)<<24-8*(h%4);h++}}return a.create(g,h)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})();(function(m){function f(l,r,n,s,d,q,p){l=l+(r&n|~r&s)+d+p;return(l<<q|l>>>32-q)+r}function g(l,r,n,s,d,q,p){l=l+(r&s|n&~s)+d+p;return(l<<q|l>>>32-q)+r}function e(l,r,n,s,d,q,p){l=l+(r^n^s)+d+p;return(l<<q|l>>>32-q)+r}function c(l,r,n,s,d,q,p){l=l+(n^(r|~s))+d+p;return(l<<q|l>>>32-q)+r}for(var o=CryptoJS,a=o.lib,j=a.WordArray,k=a.Hasher,a=o.algo,h=[],i=0;64>i;i++){h[i]=4294967296*m.abs(m.sin(i+1))|0}a=a.MD5=k.extend({_doReset:function(){this._hash=new j.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(J,T){for(var V=0;16>V;V++){var U=T+V,N=J[U];J[U]=(N<<8|N>>>24)&16711935|(N<<24|N>>>8)&4278255360}var V=this._hash.words,U=J[T+0],N=J[T+1],S=J[T+2],F=J[T+3],d=J[T+4],L=J[T+5],H=J[T+6],n=J[T+7],p=J[T+8],E=J[T+9],l=J[T+10],b=J[T+11],M=J[T+12],K=J[T+13],I=J[T+14],G=J[T+15],R=V[0],Q=V[1],P=V[2],O=V[3],R=f(R,Q,P,O,U,7,h[0]),O=f(O,R,Q,P,N,12,h[1]),P=f(P,O,R,Q,S,17,h[2]),Q=f(Q,P,O,R,F,22,h[3]),R=f(R,Q,P,O,d,7,h[4]),O=f(O,R,Q,P,L,12,h[5]),P=f(P,O,R,Q,H,17,h[6]),Q=f(Q,P,O,R,n,22,h[7]),R=f(R,Q,P,O,p,7,h[8]),O=f(O,R,Q,P,E,12,h[9]),P=f(P,O,R,Q,l,17,h[10]),Q=f(Q,P,O,R,b,22,h[11]),R=f(R,Q,P,O,M,7,h[12]),O=f(O,R,Q,P,K,12,h[13]),P=f(P,O,R,Q,I,17,h[14]),Q=f(Q,P,O,R,G,22,h[15]),R=g(R,Q,P,O,N,5,h[16]),O=g(O,R,Q,P,H,9,h[17]),P=g(P,O,R,Q,b,14,h[18]),Q=g(Q,P,O,R,U,20,h[19]),R=g(R,Q,P,O,L,5,h[20]),O=g(O,R,Q,P,l,9,h[21]),P=g(P,O,R,Q,G,14,h[22]),Q=g(Q,P,O,R,d,20,h[23]),R=g(R,Q,P,O,E,5,h[24]),O=g(O,R,Q,P,I,9,h[25]),P=g(P,O,R,Q,F,14,h[26]),Q=g(Q,P,O,R,p,20,h[27]),R=g(R,Q,P,O,K,5,h[28]),O=g(O,R,Q,P,S,9,h[29]),P=g(P,O,R,Q,n,14,h[30]),Q=g(Q,P,O,R,M,20,h[31]),R=e(R,Q,P,O,L,4,h[32]),O=e(O,R,Q,P,p,11,h[33]),P=e(P,O,R,Q,b,16,h[34]),Q=e(Q,P,O,R,I,23,h[35]),R=e(R,Q,P,O,N,4,h[36]),O=e(O,R,Q,P,d,11,h[37]),P=e(P,O,R,Q,n,16,h[38]),Q=e(Q,P,O,R,l,23,h[39]),R=e(R,Q,P,O,K,4,h[40]),O=e(O,R,Q,P,U,11,h[41]),P=e(P,O,R,Q,F,16,h[42]),Q=e(Q,P,O,R,H,23,h[43]),R=e(R,Q,P,O,E,4,h[44]),O=e(O,R,Q,P,M,11,h[45]),P=e(P,O,R,Q,G,16,h[46]),Q=e(Q,P,O,R,S,23,h[47]),R=c(R,Q,P,O,U,6,h[48]),O=c(O,R,Q,P,n,10,h[49]),P=c(P,O,R,Q,I,15,h[50]),Q=c(Q,P,O,R,L,21,h[51]),R=c(R,Q,P,O,M,6,h[52]),O=c(O,R,Q,P,F,10,h[53]),P=c(P,O,R,Q,l,15,h[54]),Q=c(Q,P,O,R,N,21,h[55]),R=c(R,Q,P,O,p,6,h[56]),O=c(O,R,Q,P,G,10,h[57]),P=c(P,O,R,Q,H,15,h[58]),Q=c(Q,P,O,R,K,21,h[59]),R=c(R,Q,P,O,d,6,h[60]),O=c(O,R,Q,P,b,10,h[61]),P=c(P,O,R,Q,S,15,h[62]),Q=c(Q,P,O,R,E,21,h[63]);
V[0]=V[0]+R|0;V[1]=V[1]+Q|0;V[2]=V[2]+P|0;V[3]=V[3]+O|0},_doFinalize:function(){var l=this._data,p=l.words,n=8*this._nDataBytes,q=8*l.sigBytes;p[q>>>5]|=128<<24-q%32;var d=m.floor(n/4294967296);p[(q+64>>>9<<4)+15]=(d<<8|d>>>24)&16711935|(d<<24|d>>>8)&4278255360;p[(q+64>>>9<<4)+14]=(n<<8|n>>>24)&16711935|(n<<24|n>>>8)&4278255360;l.sigBytes=4*(p.length+1);this._process();l=this._hash;p=l.words;for(n=0;4>n;n++){q=p[n],p[n]=(q<<8|q>>>24)&16711935|(q<<24|q>>>8)&4278255360}return l},clone:function(){var d=k.clone.call(this);d._hash=this._hash.clone();return d}});o.MD5=k._createHelper(a);o.HmacMD5=k._createHmacHelper(a)})(Math);(function(){var b=CryptoJS,a=b.lib,e=a.Base,f=a.WordArray,a=b.algo,c=a.EvpKDF=e.extend({cfg:e.extend({keySize:4,hasher:a.MD5,iterations:1}),init:function(g){this.cfg=this.cfg.extend(g)},compute:function(k,i){for(var h=this.cfg,o=h.hasher.create(),m=f.create(),q=m.words,g=h.keySize,h=h.iterations;q.length<g;){j&&o.update(j);var j=o.update(k).finalize(i);o.reset();for(var n=1;n<h;n++){j=o.finalize(j),o.reset()}m.concat(j)}m.sigBytes=4*g;return m}});b.EvpKDF=function(h,g,i){return c.create(i).compute(h,g)}})();CryptoJS.lib.Cipher||function(C){var j=CryptoJS,m=j.lib,i=m.Base,h=m.WordArray,D=m.BufferedBlockAlgorithm,g=j.enc.Base64,A=j.algo.EvpKDF,B=m.Cipher=D.extend({cfg:i.extend(),createEncryptor:function(b,c){return this.create(this._ENC_XFORM_MODE,b,c)},createDecryptor:function(b,c){return this.create(this._DEC_XFORM_MODE,b,c)},init:function(d,e,c){this.cfg=this.cfg.extend(c);this._xformMode=d;this._key=e;this.reset()},reset:function(){D.reset.call(this);this._doReset()},process:function(b){this._append(b);return this._process()},finalize:function(b){b&&this._append(b);return this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(a){return{encrypt:function(d,c,l){return("string"==typeof c?o:y).encrypt(a,d,c,l)},decrypt:function(d,c,l){return("string"==typeof c?o:y).decrypt(a,d,c,l)}}}});m.StreamCipher=B.extend({_doFinalize:function(){return this._process(!0)},blockSize:1});var t=j.mode={},z=function(l,n,d){var q=this._iv;q?this._iv=C:q=this._prevBlock;for(var p=0;p<d;p++){l[n+p]^=q[p]}},f=(m.BlockCipherMode=i.extend({createEncryptor:function(b,c){return this.Encryptor.create(b,c)},createDecryptor:function(b,c){return this.Decryptor.create(b,c)},init:function(b,c){this._cipher=b;this._iv=c}})).extend();f.Encryptor=f.extend({processBlock:function(e,l){var d=this._cipher,n=d.blockSize;z.call(this,e,l,n);d.encryptBlock(e,l);this._prevBlock=e.slice(l,l+n)}});f.Decryptor=f.extend({processBlock:function(n,l){var r=this._cipher,p=r.blockSize,q=n.slice(l,l+p);r.decryptBlock(n,l);z.call(this,n,l,p);this._prevBlock=q}});t=t.CBC=f;f=(j.pad={}).Pkcs7={pad:function(q,n){for(var u=4*n,u=u-q.sigBytes%u,r=u<<24|u<<16|u<<8|u,s=[],p=0;p<u;p+=4){s.push(r)}u=h.create(s,u);q.concat(u)},unpad:function(b){b.sigBytes-=b.words[b.sigBytes-1>>>2]&255}};m.BlockCipher=B.extend({cfg:B.cfg.extend({mode:t,padding:f}),reset:function(){B.reset.call(this);var e=this.cfg,l=e.iv,e=e.mode;if(this._xformMode==this._ENC_XFORM_MODE){var d=e.createEncryptor}else{d=e.createDecryptor,this._minBufferSize=1}this._mode=d.call(e,this,l&&l.words)},_doProcessBlock:function(b,d){this._mode.processBlock(b,d)},_doFinalize:function(){var b=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){b.pad(this._data,this.blockSize);var d=this._process(!0)}else{d=this._process(!0),b.unpad(d)}return d},blockSize:4});var k=m.CipherParams=i.extend({init:function(b){this.mixIn(b)},toString:function(b){return(b||this.formatter).stringify(this)}}),t=(j.format={}).OpenSSL={stringify:function(b){var d=b.ciphertext;b=b.salt;return(b?h.create([1398893684,1701076831]).concat(b).concat(d):d).toString(g)},parse:function(e){e=g.parse(e);var l=e.words;if(1398893684==l[0]&&1701076831==l[1]){var d=h.create(l.slice(2,4));l.splice(0,4);e.sigBytes-=16}return k.create({ciphertext:e,salt:d})}},y=m.SerializableCipher=i.extend({cfg:i.extend({format:t}),encrypt:function(p,r,e,q){q=this.cfg.extend(q);var n=p.createEncryptor(e,q);r=n.finalize(r);n=n.cfg;return k.create({ciphertext:r,key:e,iv:n.iv,algorithm:p,mode:n.mode,padding:n.padding,blockSize:p.blockSize,formatter:q.format})},decrypt:function(l,p,d,n){n=this.cfg.extend(n);p=this._parse(p,n.format);return l.createDecryptor(d,n).finalize(p.ciphertext)},_parse:function(b,d){return"string"==typeof b?d.parse(b,this):b}}),j=(j.kdf={}).OpenSSL={execute:function(l,p,e,n){n||(n=h.random(8));l=A.create({keySize:p+e}).compute(l,n);e=h.create(l.words.slice(p),4*e);l.sigBytes=4*p;return k.create({key:l,iv:e,salt:n})}},o=m.PasswordBasedCipher=y.extend({cfg:y.cfg.extend({kdf:j}),encrypt:function(p,a,l,n){n=this.cfg.extend(n);l=n.kdf.execute(l,p.keySize,p.ivSize);n.iv=l.iv;p=y.encrypt.call(this,p,a,l.key,n);p.mixIn(l);return p},decrypt:function(p,a,l,n){n=this.cfg.extend(n);a=this._parse(a,n.format);l=n.kdf.execute(l,p.keySize,p.ivSize,a.salt);n.iv=l.iv;return y.decrypt.call(this,p,a,l.key,n)}})
}();(function(){function o(d,l){var n=(this._lBlock>>>d^this._rBlock)&l;this._rBlock^=n;this._lBlock^=n<<d}function g(d,l){var n=(this._rBlock>>>d^this._lBlock)&l;this._lBlock^=n;this._rBlock^=n<<d}var h=CryptoJS,f=h.lib,e=f.WordArray,f=f.BlockCipher,t=h.algo,c=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],k=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],m=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],i=[{"0":8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{"0":1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{"0":260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{"0":2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{"0":128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{"0":268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{"0":1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{"0":134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],j=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],a=t.DES=f.extend({_doReset:function(){for(var n=this._key.words,q=[],u=0;
56>u;u++){var s=c[u]-1;q[u]=n[s>>>5]>>>31-s%32&1}n=this._subKeys=[];for(s=0;16>s;s++){for(var r=n[s]=[],p=m[s],u=0;24>u;u++){r[u/6|0]|=q[(k[u]-1+p)%28]<<31-u%6,r[4+(u/6|0)]|=q[28+(k[u+24]-1+p)%28]<<31-u%6}r[0]=r[0]<<1|r[0]>>>31;for(u=1;7>u;u++){r[u]>>>=4*(u-1)+3}r[7]=r[7]<<5|r[7]>>>27}q=this._invSubKeys=[];for(u=0;16>u;u++){q[u]=n[15-u]}},encryptBlock:function(d,l){this._doCryptBlock(d,l,this._subKeys)},decryptBlock:function(d,l){this._doCryptBlock(d,l,this._invSubKeys)},_doCryptBlock:function(w,z,y){this._lBlock=w[z];this._rBlock=w[z+1];o.call(this,4,252645135);o.call(this,16,65535);g.call(this,2,858993459);g.call(this,8,16711935);o.call(this,1,1431655765);for(var x=0;16>x;x++){for(var v=y[x],u=this._lBlock,s=this._rBlock,l=0,b=0;8>b;b++){l|=i[b][((s^v[b])&j[b])>>>0]}this._lBlock=s;this._rBlock=u^l}y=this._lBlock;this._lBlock=this._rBlock;this._rBlock=y;o.call(this,1,1431655765);g.call(this,8,16711935);g.call(this,2,858993459);o.call(this,16,65535);o.call(this,4,252645135);w[z]=this._lBlock;w[z+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});h.DES=f._createHelper(a);t=t.TripleDES=f.extend({_doReset:function(){var d=this._key.words;this._des1=a.createEncryptor(e.create(d.slice(0,2)));this._des2=a.createEncryptor(e.create(d.slice(2,4)));this._des3=a.createEncryptor(e.create(d.slice(4,6)))},encryptBlock:function(d,l){this._des1.encryptBlock(d,l);this._des2.decryptBlock(d,l);this._des3.encryptBlock(d,l)},decryptBlock:function(d,l){this._des3.decryptBlock(d,l);this._des2.encryptBlock(d,l);this._des1.decryptBlock(d,l)},keySize:6,ivSize:2,blockSize:2});h.TripleDES=f._createHelper(t)})();function myformatDate(v,format){if(!v){return""}var d=v;if(typeof v==="string"){if(v.indexOf("/Date(")>-1){d=new Date(parseInt(v.replace("/Date(","").replace(")/",""),10))}else{d=new Date(Date.parse(v.replace(/-/g,"/").replace("T"," ").split(".")[0]))}}else{if(typeof v==="number"){d=new Date(v)}}var o={"M+":d.getMonth()+1,"d+":d.getDate(),"h+":d.getHours(),"m+":d.getMinutes(),"s+":d.getSeconds(),"q+":Math.floor((d.getMonth()+3)/3),"S":d.getMilliseconds()};format=format||"yyyy-MM-dd";if(/(y+)/.test(format)){format=format.replace(RegExp.$1,(d.getFullYear()+"").substr(4-RegExp.$1.length))}for(var k in o){if(new RegExp("("+k+")").test(format)){format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+o[k]).substr((""+o[k]).length))}}return format}var DES3={iv:function(){return myformatDate(new Date(),"yyyyMMdd")},encrypt:function(b,c,a){if(c){return(CryptoJS.TripleDES.encrypt(b,CryptoJS.enc.Utf8.parse(c),{iv:CryptoJS.enc.Utf8.parse(a||DES3.iv()),mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7})).toString()}return""},decrypt:function(b,c,a){if(c){return CryptoJS.enc.Utf8.stringify(CryptoJS.TripleDES.decrypt(b,CryptoJS.enc.Utf8.parse(c),{iv:CryptoJS.enc.Utf8.parse(a||DES3.iv()),mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7})).toString()}return""}};function decrypt(b,c,a){if(c){return CryptoJS.enc.Utf8.stringify(CryptoJS.TripleDES.decrypt(b,CryptoJS.enc.Utf8.parse(c),{iv:CryptoJS.enc.Utf8.parse(a||DES3.iv()),mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7})).toString()}return""}function geneToken(size){var str="",arr=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];for(var i=0;i<size;i++){str+=arr[Math.round(Math.random()*(arr.length-1))]}return str}function myrandom(d){for(var e=[],b=0;b<d;b+=4){e.push(4294967296*Math.random()|0)}return new c.init(e,d)}function cipher(){var date=new Date();var timestamp=date.getTime().toString();var salt=geneToken(24);var year=date.getFullYear().toString();var month=(date.getMonth()+1<10?"0"+(date.getMonth()+1):date.getMonth()).toString();var day=(date.getDate()<10?"0"+date.getDate():date.getDate()).toString();var iv=year+month+day;var enc=DES3.encrypt(timestamp,salt,iv).toString();var str=salt+iv+enc;var ciphertext=strTobinary(str);return ciphertext}function strTobinary(str){var result=[];var list=str.split("");for(var i=0;i<list.length;i++){if(i!=0){result.push(" ")}var item=list[i];var binaryStr=item.charCodeAt().toString(2);result.push(binaryStr)}return result.join("")};

在应用启动时加载js

private static Invocable inv;
    static {
        try {
            String jsScript = FileUtil.readString(new File("/Users/kevindai/Downloads/entry.js"), Charset.defaultCharset());
            ScriptEngineManager manager = new ScriptEngineManager();
            ScriptEngine engine = manager.getEngineByName("JavaScript");
            engine.eval(jsScript);
            inv = (Invocable) engine;
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }

编写生成参数以及解密代码

   private String geneToken() throws Exception{
        return (String)inv.invokeFunction("geneToken","24");
    }

    private String geneCiphertext() throws Exception{
        return (String)inv.invokeFunction("cipher");
    }


    private String decode(String value,String key) throws Exception{
        return (String)inv.invokeFunction("decrypt",value,key);
    }

编写docId爬取代码

@Test
    public void getDocId() throws Exception{
        RestTemplate restTemplate = ApplicationContextUtil.getBean(RestTemplate.class);

        Set<String> result = new HashSet<>();
        for (int i = 1; i < 2; i++) {
            try{
                HttpHeaders headers = new HttpHeaders();
                headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
                headers.set("Host","wenshu.court.gov.cn");
                headers.set("Accept","application/json, text/javascript, */*; q=0.01");
                headers.set("X-Requested-With","XMLHttpRequest");
                headers.set("User-Agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36");
                headers.set("Origin","https://wenshu.court.gov.cn");
                headers.set("Sec-Fetch-Site","same-origin");
                headers.set("Sec-Fetch-Mode","cors");
                headers.set("Sec-Fetch-Dest","empty");
                headers.set("Referer","");//使用网页上的referer
                headers.set("Accept-Language","en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,zh-TW;q=0.6");
                headers.set("Cookie","");//直接使用网页上的cookie



                MultiValueMap<String, String> map= new LinkedMultiValueMap<String, String>();
                map.add("pageId", "d91f41eae9a449a15ab899dde08cd0c5");
                map.add("s21", "经济犯罪");
                map.add("sortFields", "s50:desc");
                map.add("ciphertext", geneCiphertext());
                map.add("pageNum", String.valueOf(i));
                map.add("pageSize", "50");
                map.add("queryCondition", "[{\"key\":\"s21\",\"value\":\"经济犯罪\"}]");
                map.add("cfg", "com.lawyee.judge.dc.parse.dto.SearchDataDsoDTO@queryDoc");
                map.add("__RequestVerificationToken", geneToken());

                HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<MultiValueMap<String, String>>(map, headers);
                ResponseEntity<String> response = restTemplate.exchange(URL, HttpMethod.POST, entity, String.class);
                if(response.getStatusCode() == HttpStatus.OK){
                    String body = response.getBody();
                    JSONObject resultJson = JSONUtil.parseObj(body);
                    String secretKey = resultJson.getStr("secretKey");
                    String value = resultJson.getStr("result");
                    String docBrief = decode(value, secretKey);
                    JSONObject relWenshu = JSONUtil.parseObj(docBrief).getJSONObject("relWenshu");
                    result.addAll(relWenshu.keySet());
                    TimeUnit.SECONDS.sleep(RandomUtils.nextInt(5,10));

                }
            }catch (Exception e){
                e.printStackTrace();
            }

        }
        CsvUtil.getWriter(new File("/Users/kevindai/Downloads/wenshuid1.csv"),Charset.defaultCharset(),false).write(result);
    }

我这里只是写了个demo,所以cookie是直接从网站上复制的,需要用在生产环境的同学可以先用selenium之类的框架模拟登陆拿到cookie,这样可以实行全流程的自动化

编写爬取文书完全的代码

List<String> docIds = FileUtil.readLines("/Users/kevindai/Downloads/wenshuid1.csv", Charset.defaultCharset());
        ArrayList<List<String>> result = new ArrayList<>();
        for (String docId : docIds) {
            try{
                RestTemplate restTemplate = ApplicationContextUtil.getBean(RestTemplate.class);

                HttpHeaders headers = new HttpHeaders();
                headers.set("Accept","application/json, text/javascript, */*; q=0.01");
                headers.set("X-Requested-With","XMLHttpRequest");
                headers.set("User-Agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36");
                headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
                headers.set("Origin","https://wenshu.court.gov.cn");
                headers.set("Sec-Fetch-Mode","cors");
                headers.set("Sec-Fetch-Dest","empty");
                headers.set("Sec-Fetch-Site","same-origin");
                headers.set("Referer","");//使用网页的referer
                headers.set("Accept-Encoding","gzip, deflate, br");
                headers.set("Accept-Language","en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,zh-TW;q=0.6");
                headers.set("cookie", "");//使用网页的cookie

                MultiValueMap<String, String> map= new LinkedMultiValueMap<String, String>();
                map.add("docId", docId);
                map.add("ciphertext", geneCiphertext());
                map.add("cfg", "com.lawyee.judge.dc.parse.dto.SearchDataDsoDTO@docInfoSearch");
                map.add("__RequestVerificationToken", geneToken());

                HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<MultiValueMap<String, String>>(map, headers);
                ResponseEntity<String> response = restTemplate.exchange(URL, HttpMethod.POST, entity, String.class);
                if(response.getStatusCode() == HttpStatus.OK){
                    String body = response.getBody();
                    JSONObject resultJson = JSONUtil.parseObj(body);
                    String secretKey = resultJson.getStr("secretKey");
                    String value = resultJson.getStr("result");
                    String wenchuContent = decode(value, secretKey);

                    JSONObject wenshuContentJson = JSONUtil.parseObj(wenchuContent);
                    String name = wenshuContentJson.getStr("s17");
                    String wenshuName = wenshuContentJson.getStr("s7");
                    String qwContent = wenshuContentJson.getStr("qwContent");
                    qwContent = Jsoup.parse(qwContent).text();

//                    FileUtils.write(new File("/Users/kevindai/Downloads/wenshu1/"+name+"-"+wenshuName+ ".txt"),qwContent, Charsets.UTF_8);
                    ArrayList<String> list = Lists.newArrayList(name, wenshuName, qwContent);
                    result.add(list);
                    TimeUnit.SECONDS.sleep(RandomUtils.nextInt(5,10));

                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }

        CsvUtil.getWriter(new File("/Users/kevindai/Downloads/wenshu1.csv"),Charset.defaultCharset()).write(result);
    }

ok,到这里代码就全部编写完成了,经过测试爬取是没问题的。此数据源用于一些风控场景还是挺有效的,希望能帮到你们。如果大家觉得什么网站加密很有趣也可以发给我研究一下啊

猜你喜欢

转载自blog.csdn.net/KevinDai007/article/details/113872464
今日推荐