import java.io.FileReader;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import org.apache.commons.codec.digest.DigestUtils;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
String jsName = "test.js";
//读取js
FileReader fileReader;
try {
fileReader = new FileReader("D:/website/soyangsend/suc.js");
//执行指定脚本
ScriptEngineManager m = new ScriptEngineManager();
//获取JavaScript执行引擎
ScriptEngine engine = m.getEngineByName("JavaScript");
engine.eval(fileReader);
ScriptContext context = engine.getContext();
String itis=(String) context.getAttribute("itis");
System.out.println("获取js变量:"+itis);
String md5Hex = DigestUtils
.md5Hex(itis);
System.out.println("获取到的变量md5加密"+md5Hex);
} catch (Exception e) {
e.printStackTrace();
}
}
}
js文件:
function serialize(keys) {
return keys.sort(function(clusterShardData, certFileContent) {
return clusterShardData.split("=")[0] < certFileContent.split("=")[0] ? -1 : 1;
}).join("&");
}
function md5(value) {
return function(text) {
var t;
var aStatedRank;
var normalized_images;
var L;
var p;
var r;
var c;
var s = "";
var i = 0;
text = function(val) {
val = val.replace(/x0dx0a/g, "\n");
var paginationStr = "\u00ef\u00bb\u00bf";
var index = 0;
for (; index < val.length; index++) {
var i = val.charCodeAt(index);
if (i < 128) {
paginationStr = paginationStr + String.fromCharCode(i);
} else {
if (127 < i && i < 2048) {
paginationStr = paginationStr + String.fromCharCode(i >> 6 | 192);
} else {
paginationStr = paginationStr + String.fromCharCode(i >> 12 | 224);
paginationStr = paginationStr + String.fromCharCode(i >> 6 & 63 | 128);
}
paginationStr = paginationStr + String.fromCharCode(63 & i | 128);
}
}
return paginationStr;
}(text);
for (; i < text.length;) {
L = (t = text.charCodeAt(i++)) >> 2;
p = (3 & t) << 4 | (aStatedRank = text.charCodeAt(i++)) >> 4;
r = (15 & aStatedRank) << 2 | (normalized_images = text.charCodeAt(i++)) >> 6;
c = 63 & normalized_images;
if (isNaN(aStatedRank)) {
r = c = 64;
} else {
if (isNaN(normalized_images)) {
c = 64;
}
}
s = s + format.charAt(L) + format.charAt(p) + format.charAt(r) + format.charAt(c);
}
return s;
}(value);
}
function toString(value) {
return function(text) {
var t;
var aStatedRank;
var normalized_images;
var L;
var p;
var r;
var c;
var s = "";
var i = 0;
text = function(val) {
val = val.replace(/x0dx0a/g, "\n");
var paginationStr = "\u00ef\u00bb\u00bf";
var index = 0;
for (; index < val.length; index++) {
var i = val.charCodeAt(index);
if (i < 128) {
paginationStr = paginationStr + String.fromCharCode(i);
} else {
if (127 < i && i < 2048) {
paginationStr = paginationStr + String.fromCharCode(i >> 6 | 192);
} else {
paginationStr = paginationStr + String.fromCharCode(i >> 12 | 224);
paginationStr = paginationStr + String.fromCharCode(i >> 6 & 63 | 128);
}
paginationStr = paginationStr + String.fromCharCode(63 & i | 128);
}
}
return paginationStr;
}(text);
for (; i < text.length;) {
L = (t = text.charCodeAt(i++)) >> 2;
p = (3 & t) << 4 | (aStatedRank = text.charCodeAt(i++)) >> 4;
r = (15 & aStatedRank) << 2 | (normalized_images = text.charCodeAt(i++)) >> 6;
c = 63 & normalized_images;
if (isNaN(aStatedRank)) {
r = c = 64;
} else {
if (isNaN(normalized_images)) {
c = 64;
}
}
s = s + format.charAt(L) + format.charAt(p) + format.charAt(r) + format.charAt(c);
}
return s;
}(value);
}
var format = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
function walk(y) {
return function(obj) {
if (Array.isArray(obj)) {
var i = 0;
var result = new Array(obj.length);
for (; i < obj.length; i++) {
result[i] = obj[i];
}
return result;
}
}(y) || function(arr) {
if (Symbol.iterator in Object(arr) || "[object Arguments]" === Object.prototype.toString.call(arr)) {
return Array.from(arr);
}
}(y) || function() {
throw new TypeError("Invalid attempt to spread non-iterable instance");
}();
}
key="beginTime=2019-10-28&endTime=2019-11-03&page=1&size=10&is_ad=0&source_type=0&saas_token=8d98e56f41fbf1504f30dea8a11e3e75&saas_timestamp=1572743406".split("&");
value=serialize(key);
itis=toString(value).slice(4);