python 逆向爬虫正确调用 JAR 加密逻辑
在 App 端爬虫过程中,遇到未知的参数,往往需要我们去逆向破解 App,针对参数的生成逻辑,使用 Python 去实现
部分 App 参数的生成逻辑可能已经写入到多个 JAR 文件中,这时候,我们只需要用 Python 执行 JAR 即可
本篇文章将聊聊 Python 如何调用 JAR 中的方法
2. 合并 JAR以 Android App 为例,假设加密参数生成逻辑在多个 JAR 中,我们首先需要将所有的 JAR 文件合并为一个 JAR 文件
PS:对于 AAR 文件,可以先通过解压软件解压,然后再合并 JAR
合并 JAR 分为 2 步:
解压 JAR 合并所有源码2-1 解压 JAR安装 JDK 之后,通过 jar -xvf 命令去解压单个 JAR,这样会按包名在同级目录下生成 JAVA 编译后的 class 文件
# 一个个地去解压JAR# 在本地生成class文件jar -xvf a.jarjar -xvf b.jarjar -xvf c.jar2-2 合并所有源码
使用 jar -cvfM 命令,将本地所有的 class 文件生成一个新的 JAR
# 合并当前目录下所有源码为一个JAR# 其中:output.jar代表新的JARjar -cvfM output.jar .3. Python 调用 JAR
首先,我们安装依赖包:jpype
# 安装依赖包pip3 install JPype1
假设 JAR 中加密逻辑实现代码如下:
package com.xingag.common;public class EncryHelper { public String encrypt(String content) { //加密逻辑 }}
使用 Python 调用 JAR 中的方法分为 3 步:
启动 JVM 实例化 JAVA 对象,调用对应方法 关闭 JVM3-1 启动 JVMimport jpype# JAR本地路径jar_path = os.path.join(os.path.abspath(’.’), ’./output.jar’)# 启动jvmjpype.startJVM(jpype.getDefaultJVMPath(), '-ea', '-Djava.class.path=%s' % (jar_path))3-2 实例化 JAVA 对象,调用方法
根据被调方法所在的包名,使用 jpyte 中的 JClass() 方法实例化类 JAVA 对象,最后调用 JAVA 对象的方法即可
需要注意的是,由于 JAVA 中是实例方法,需要先进行对象实例化,然后调用方法;如果是静态方法,可以直接调用方法
# 通过包名,实例化JAVA对象EncryClass = jpype.JClass('com.xingag.common.EncryHelper')encryClass = EncryClass()# 调用JAVA中的加密方法content_encry = encryClass.encrypt('xag')print(content_encry)4. 最后
Python 直接调用 JAR 中方法,可以帮我我们复用轮子,减轻爬虫的工作量!
以上就是python 逆向爬虫正确调用 JAR 加密逻辑的详细内容,更多关于python 爬虫正确调用 JAR 加密逻辑的资料请关注好吧啦网其它相关文章!
相关文章:
1. ASP.NET泛型四之使用Lazy<T>实现延迟加载2. Vue中keep-alive组件的深入理解3. Idea工具中创建 SpringBoot工程及入门详解4. 详解Java并发包中线程池ThreadPoolExecutor5. vue在响应头response中获取自定义headers操作6. VUE+Express+MongoDB前后端分离实现一个便签墙7. ASP.NET MVC使用正则表达式验证手机号码8. 使用本机IIS Express开发Asp.Net Core应用图文教程9. Ajax 的初步实现(使用vscode+node.js+express框架)10. 一个用xslt样式将xml解析为xhtml的类TransformBinder(兼容FF和IE7.0)

网公网安备