Android反编译之36kr.app

背景

   昨天做项目的时候因为没有数据源,就想着用jsoup去爬点数据用用(别问我为什么不用python,因为不会)。首选爬的对象就是36kr。但是这个网站做了脚本处理,用script去动态加载页面。毕竟不是咱熟悉的领域,算他牛逼,咱爬不了他的网站,那就直接去反编译的app,app你总得给出获取数据的链接了吧。我和你用一样的数据一样的链接行不行?
   想着以前也没有写过反编译这个方面的东西,想着就写点,抛钻引玉。

只是学术研究,并无恶意,希望36kr的大哥别和我一般见识。

准备工具

   · Apk反编译的集成工具给大家推荐个好用的。点击下载
   · 36kr的app for Android。点击下载

开始


Step One:

   打开apk的反编译工具:

反编译工具

   接着只要选择需要反编译的apk,选择反编译后的文档位置,编译选项选择all。

编译后

   编译完成后出现一个文件夹以及一个jar包。文件夹里面是36krapp的工程结构,而我们需要用到的是jar包。

Step Two:

   接着打开反编译工具里面的jd-gui.exe这个程序。这个程序可以反编译jar文件。打开之后点击File->Open File 选择刚刚得到的jar包。

打开jar包

我们看到了经过代码混淆之后的工程目录。但是无论代码再怎么混淆,都躲不过有心人的查找。

  1. 从这个apk的名字我们都可以看出来36kr的主目录在那里。com.android36kr。所以主目录一定在com这个包下。但是打开com这个包才是最头疼的。
    工程结构

  2. 是不是感觉有点难以动手?还记不记得前面说的 com.android36kr?别急,打开android36kr这个包。

36kr

我们可以看到a,app,login这三个包。分析一下,a包做了混淆。app是软件的主目录包,login是登陆功能包。为什么要对a包做混淆?难道里面有着什么重要的东西?(好吧,我承认我说出这句话是因为整个工程的所有文件我的看了一遍。。。。)节省你们的时间,我们直接查看a包。

  1. 为了节省大家的时间,我也不是写悬疑小说的作家,我告诉你们他们的大部分请求链接都是放在com.android36kr.a.b.a.b.class这个文件里面。

这里写图片描述

这个b包下也还是有很多其他的请求链接的。但是我们着重来看b.class。因为我的目的只是想那我的数据,其他的我不作非分之想。接下来打开b.class
这里写图片描述

在这个类中我找到了我要的请求方法newsflash这是36kr的一个快讯的数据接口。

napi/newsflash这个就是链接后缀。但是前缀呢?自然就是http://36kr.com

猜测准不准确,验一验就知道了。点击实验。(为了防止以后测试过期,我在这里加一条测试时间 2017年5月16日 15:10:09)

这里写图片描述

那道一大堆数据的我也是欣喜若狂,但是我不喜欢这些乱七八糟的数据,那是程序看的,不是人。我只看到了json中有一个字段limit:10。什么意思?你每次只给我10条?难道我的app就只能给别人看10条?

我们再回去看看源码中的api 发现了一个字段per_page
这里写图片描述

不用想肯定有猫腻。链接是get方式请求的,那么我们尝试在连接中加入这个字段,per_page=20吧。也给出一条验证链接 per_page=20

这里写图片描述

在一坨json数据的底部,我们再次看到了limit:20这个字段。那么就是说我们只要凭这个per_page就可以获取更多的数据。

到此打住

   人家的东西就看到这里好了,有兴趣的朋友可以自己去发掘,但是我要声明与本人无关。手痒的我发现我连json的格式化类我的省了。

这里写图片描述

借来用用

最后祝大家玩的开心。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值