码迷,mamicode.com
首页 > 编程语言 > 详细

从HTML文件中取出JS加密需要的参数,并调用js内的加密算法

时间:2019-03-19 17:07:54      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:eval   ace   match   java   cab   man   group   reader   rgs   

背景,爬虫程序需要模拟登陆,账号密码是经js加密的,加密所需的参数需要从html页面中取出

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class ScriptEngineTest {
public static void main(String[] args) throws IOException, ScriptException, NoSuchMethodException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
String jsFileName = "src/main/resources/static/ss.js";
String htmlFileName = "src/main/resources/static/url.html";
Pattern pattern = Pattern.compile("\"10001\", \"\", \"(.*?)\"");
String htmldatas = readfile(htmlFileName);
String key = getkey(pattern, htmldatas);
System.out.println("Key=" + key);
FileReader reader = new FileReader(jsFileName);
engine.eval(reader);
if (engine instanceof Invocable) {
Invocable invoke = (Invocable) engine;
String c = (String) invoke.invokeFunction("find", "10001", key, "111111");
System.out.println("加密后:" + c);
}
reader.close();
}


public static String readfile(String filePath) {
File file = new File(filePath);
InputStream input = null;
try {
input = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
StringBuffer buffer = new StringBuffer();
byte[] bytes = new byte[1024];
try {
for (int n; (n = input.read(bytes)) != -1; ) {
buffer.append(new String(bytes, 0, n, "UTF-8"));
}
} catch (IOException e) {
e.printStackTrace();
}
return buffer.toString();
}

public static String getkey(Pattern pattern, String htmldatas) {
Matcher matcher = pattern.matcher(htmldatas);
String htmldata = "";
String key = "";
if (matcher.find()) {
htmldata = matcher.group();
System.out.println("htmldata=" + htmldata);
String ss[] = htmldata.split(",");
key = ss[2].replace("\"","").trim();
}
return key;
}
}

从HTML文件中取出JS加密需要的参数,并调用js内的加密算法

标签:eval   ace   match   java   cab   man   group   reader   rgs   

原文地址:https://www.cnblogs.com/jakin3130/p/10559425.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!