简介这篇文章主要介绍了从HTML文件中取出JS加密需要的参数,并调用js内的加密算法以及相关的经验技巧,文章约2677字,浏览量385,点赞数2,值得参考!

背景,爬虫程序需要模拟登陆,账号密码是经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目录参数加密,从HTML文件中取出JS加密需要的参数,并调用js内的加密算法相关推荐

  1. java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件

    注意两点: 1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中. 2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取. 例子 ...

  2. md5 php 加密后乱码_PHP中的密码加密的解决方案总结

    很多用户多个网站使用一个密码,当一个密码丢失其他也遭殃,本篇文章介绍了PHP中的密码加密的解决方案总结,有需要的朋友可以了解一下. 层出不穷的类似事件对用户会造成巨大的影响,因为人们往往习惯在不同网站 ...

  3. 【办公自动化实例】使用python将多个excel文件中的多个sheet表合并到一个表内

    文章目录 一.需求 二.处理方式 三.代码实现 一.需求 将多个excel文件中的多个sheet表合并到一个工作簿内,参考例子如图: 二.处理方式 1.通过os模块遍历文件,提取获取xlsx文件的路径 ...

  4. java数据从本地文件中取出_java 从数据库取数据并存入本地文本中

    要求如下: 1.连接数据库,取数据,weibo表中取出uid和text 2.判断uid是否相同,如果相同,则把其对应的text存入路径为D:\data1的同一文件中,并且以此uid命... 要求如下: ...

  5. js文件中声明的一个json对象, 在另一个js文件中可以直接使用。

    1. 如在 AAA.js 文件中声明一个json对象. var world_geo_json = {"type":"FeatureCollection",&qu ...

  6. matlab函数参数命令,matlab函数文件中的输出参数如何不在命令窗口显示

    www.mh456.com防采集. 不要直接像普通程序2113一样运行函数,函数是用来5261调用的,如果你在其它程序中调4102用或在命1653令行中输入result=function**():的话 ...

  7. python输入函数格式_python如何提取.c文件中的指定函数的输入参数

    比如你的C文件是c_functions.c: 内容如下:normal_1(in-1, in-2, in-3) { ; } normal_2() { ; } 程序参考源码:import re f = o ...

  8. python参数默认值实例_Python中使用partial改变方法默认参数实例

    #!/usr/bin/env python # -*- coding: utf-8 -*- #python2.7x #partial.py #authror: orangleliu ''' funct ...

  9. jdk8 参数为方法_JDK 8中的几乎命名的方法参数

    jdk8 参数为方法 有时在Java中命名方法参数确实很不错,这看起来可能已经很长时间了,但是始终还有其他一些解决方法,例如使用构建器模式来获得类似的行为,这将为一点点. 在我看来,使用JDK 8中的 ...

最新文章

  1. android jni语法,Android NDK中的JNIEXPORT和JNICALL
  2. Java架构演进之路
  3. C++ Primer 学习笔记(第四章:表达式)
  4. 修改完 字符串单词首字母大写
  5. 关于Verilog HDL的一些技巧、易错、易忘点(不定期更新)
  6. git常用命令和场景
  7. 600 imp oracle_oracle数据库的导入导出(imp和exp)
  8. Android中获取手机电量信息
  9. 从svn导入项目后处理一些报错信息
  10. LeetCode 1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?(前缀和)
  11. Java面试题:高并发环境下,jdk7 HashMap可能出现的致命问题。注意:是在jdk7与及以下版本
  12. 栈帧与操作数栈剖析及符号引用与直接引用的转换
  13. Java虚拟机学习总结(4)—— JVM 性能调优常用参数详解
  14. API网关的几点思考
  15. 零基础java学习笔记
  16. impala日期格式转换
  17. 网络计算机没有权限,电脑网络连接出现“无Internet访问权限”怎么办?
  18. Golang可能会踩的58个坑之中级篇
  19. 搭建一个 软件授权码管理系统
  20. java实现图片文件上传下载_java实现文件的上传和下载

热门文章

  1. 图标代码_通过两行代码即可调整苹果电脑 Launchpad 图标大小!
  2. 观察者模式实际例子demo
  3. KVM Virtual Networking Concepts
  4. Prometheus-普罗米修斯:高扩展性的监控和报警系统
  5. 2021年三月中旬推荐阅读文章
  6. ZeroMQ简介:一种高性能的异步消息传递库
  7. CUDA内存分配、释放、传输,固定内存
  8. qt 运动控制软件 界面_开源库分享----一款跨平台图形界面的百度网盘不限速客户端...
  9. SpringCloud feign、hystrix、zuul超时配置
  10. android 微信支付过程,android 微信 支付 接入流程总结