逆向爬虫时,Python 如何正确调用 JAR 加密逻辑?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了逆向爬虫时,Python 如何正确调用 JAR 加密逻辑?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2151字,纯文字阅读大概需要4分钟。
内容图文
1. 前言
在 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.jar
jar -xvf b.jar
jar -xvf c.jar
2-2 合并所有源码
使用 jar -cvfM 命令,将本地所有的 class 文件生成一个新的 JAR
# 合并当前目录下所有源码为一个JAR
# 其中:output.jar代表新的JAR
jar -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 对象,调用对应方法
-
关闭 JVM
3-1 启动 JVM
import jpype
# JAR本地路径
jar_path = os.path.join(os.path.abspath('.'), './output.jar')
# 启动jvm
jpype.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)
3-3 关闭 JVM
可以选择主动关闭 JVM,或者待 Python 程序运行后自动关闭,释放资源
import jpype
?
# 关闭jvm
jpype.shutdownJVM()
4. 最后
Python 直接调用 JAR 中方法,可以帮我我们复用轮子,减轻爬虫的工作量!
我已经将文中的完整源码传到后台,关注公众号「 AirPython 」,后台回复「 pjar 」即可获得
如果你觉得文章还不错,请大家 点赞、分享、留言下,因为这将是我持续输出更多优质文章的最强动力!
内容总结
以上是互联网集市为您收集整理的逆向爬虫时,Python 如何正确调用 JAR 加密逻辑?全部内容,希望文章能够帮你解决逆向爬虫时,Python 如何正确调用 JAR 加密逻辑?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。