首页 > 编程知识 正文

python爬取网页数据软件(python从内网爬取数据)

时间:2023-05-06 18:40:41 阅读:103197 作者:1755

今天继续和大家分享Python爬虫的教程。这次主要涉及一个APP的逆向分析和数据抓取。APP的反爬会比较麻烦。比如安卓端的代码写好之后,会被打包,和加密加固混为一谈。因此,除了捕获包之外,还需要对APP进行检查和反编译。

接下来《小帅B的朋友:Houser》会给大家展示如何反向抓取APP数据,给大家一些思路:

所需设备和环境:

设备:安卓手机

抓住袋子:

提琴手刚刚公开了信任时间

检查外壳:ApkScan-PKID

剥皮:frida-DEXDump

编译:jadx-gui

弗里达

抓住袋子

在手机上安装app,设置好代理,打开提琴手,先抓个包,发现app已经做了证书验证。打开fiddler后,应用程序会提示您无法连接到服务器:

也就是说,app已经做了SSL钉住证书验证。为了解决这个问题,一般会安装e xposed框架。其中有一个JustTrustme模块。它的原理是hook,直接绕过证书验证类。安装方式是百度。

然后打开app,可以看到你成功抓到了包:

简单分析一下,我们可以看到请求体中的formdata是密文,响应内容也是密文。在这个请求和响应中几乎没有有用的信息,我们甚至不知道如何在jadx-gui中搜索。请求正文中的formdata以两个等号结束,这应该是base64代码,其他什么都不知道。

Shell反编译

我们先反编译一下。在此之前,通常是用外壳检查工具检查app是否硬化,打开ApkScan-PKID,将app拖拽到:

可以看到这款app使用了360加固,真的是受层数限制!在这里,你可以使用frida-DEXDump进行炮击。你可以从github下载frida-DEXDump的源代码。然后,打开项目所在的文件夹,并在当前位置打开命令行以运行以下命令:

python main.py

脱壳完成后,可以看到当前项目中已经生成了一个对应的文件夹,里面有很多dex文件:

用下面的jadx-gui打开dex文件,一般从最大的文件开始,依次搜索关键词。我们知道在java中使用base64时有BASE64Encoder关键字。因为抓取包获得的信息非常少,所以只能在这里搜索这个关键词。当我们找到第四个dex时,我们得到了可疑的加密:

可以看出使用了aes加密,密钥是固定字符串。

弗里达胡克

Java还不够熟悉,无法分析,所以只需使用frida编写一个钩子代码来查看encrypt函数的参数和输出的内容:

与此同时,拿起包进行比较:

这里得到了请求数据输入数据:

页面索引:当前页码

页面大小:当前页面对应的数据数量

TypeId和源是固定的。接下来,我们使用钩子解密函数来比较捕获包和钩子的结果:

结果是一样的。到目前为止,我们的逆向分析已经完成。

总结请求和响应过程,即请求体中的数据通过encrypt函数进行加密并传递给参数,可以通过改变pageIndex来获取每一页的数据。响应由decrypt函数加密和显示,所以我们只需要在python中实现这个aes加密和解密过程。从反编译的java代码中,我们可以看到密钥是固定的:wxtdefgabcdawn12,没有iv偏移量。

请求

直接代码上传:

运行代码并成功获取数据:

好了,以上就是反向app爬虫的全部内容。如您所见,数据加密现在已经变得非常普遍。任何小应用都有几种数据保护机制。这次只涉及java层的加密。下一次,我们将讨论原生层加密的钩子方法、frida-rpc主动调用以及反向工件检查的应用。

最后,以上内容仅供学习交流,小帅B的分享希望今天能帮到你一点,那么下次再见,平安!

注意我

收获更多骚操作

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。