裁判文书网APP采集思路-失败案例

怎么说呢,破解这块已经做得差不多了,但是在请求的时候出问题了,请求不到数据。另外我们通过其他途径已经采集了三千多万的文书数据,有需要的可联系。

曾经的时候要采集裁判文书网上的数据,于是查看APP,当然是需要下载APK的,先说明一下之前的破解思路,在获取到APK之后,嗯,还是写一篇非常详细的技术说明吧。(我用的是Mac环境)

准备工作,工具下载配置

反编译会使用到的工具有apktool、dex2jar、jd-gui

1、apktool的配置

   1、下载apktool 链接:https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/osx/apktool 直接将这个文件保存为apktool 附件:apktool

   2、apktool.jar 的下载 链接:https://bitbucket.org/iBotPeaches/apktool/downloads/ 直接下载最新版的就可以 附件:apktool.jar

   3、将两个文件复制到/usr/local/bin 里面,并修改权限可执行,chmod + x 可以直接chmod 777  当然简单的方式就是新建一个文件夹,将所有的apk 以及工具等都放在这里面就可以了。

   4、终端直接运行apktool 

2、dex2jar 配置

    下载链接:https://sourceforge.net/projects/dex2jar/ 直接下载就可以,同时将目录里面的chmod 777 *.sh 增加可执行权限附件:dex2jar-2.0.zip

3、JD-GUI 配置

    下载链接:http://jd.benow.ca/ 

这个时候我们的准备环境就好了,当然你还需要从官网将APK下载下来,建议将apk和上面的三个工具都放在一个文件夹中,这样反编译后的文件都在一个目录里面了,易于管理。


1、反编译AndroidManifest和资源文件

    $ apktool d ***.apk 执行这个命令之后,就得到了一些目录,自己查看一下就可以。这个apk就是裁判文书的apk

2、反编译java代码

   使用dex2jar工具可以反编译apk的java代码,在这里直接一步到位

   sh dex2jar-2.0/d2j-dex2jar.sh ***.apk  注意sh文件是有可执行权限的。这样我们就得到了一个jar包,接下来就是通过这个jar包来查看一些东西。 上述所有的东西可以参考:https://www.jianshu.com/p/b3bb4da64dc7


开始查看裁判文书APP的jar

在这里就直奔主题了。首先的是token的生成,在这里先说明一下老的版本是客户端生成的,所以会去找它的生成方式,我们知道java中重要的编码方式有两种一种是MD5,一种是Base64 所以,先直接搜索一下MD5吧

上面的这个token生成方式已经不能用了,所以就不要再尝试了,现在已经是通过请求获取的token了。

之后通过Charles 发现客户端返回的数据是加密的数据,像这种一长串的字符串一般就是Base64加密后的东西了。所以在这里再次搜索Base64

现在已经定位到了这块,那么就得找到是谁调用了这个方法,这个时候通用的做法,就是直接搜索包名,看看有没有。最笨的方式就是找相关的类,看看有没有这个方法。可以直接弄到eclipse里面直接搜索。这里直接上图了。

这个文件夹,通过apktool获取的目录里面的lib就是这个,里面有各种架构格式的so文件。现在呢有两条路可以选,要么破解so文件,要么不破解

尝试破解so文件,使用IDA-PRO工具来进行破解,可以网上搜,或者支持一下呗:链接:https://pan.baidu.com/s/1zzmUISryZkE-HEUQXSoFkw  密码:76pr

里面的三个方法,就在这里面了,可惜啊可惜,哥们我汇编不太会啊。实在是看不懂搞不定,只能另辟蹊径了。

我们知道lib里面的so文件是在安卓里面调用的,那我们建立一个安卓工程来验证一下不就可以了。

接下来就是安装android的环境,mac版本下载的是 android stuido 工具。所有的东西设定好了之后,如果是新建工程有可能会出错,记得在开始新建的时候:

2、运行的时候 报 constraint-layout 不能 resolve之类的,查看tools sdk manager 中

好了,现在新建一个我们自己的android工程吧,这里要做的就是 增加个按钮,点击它,然后执行解码程序,看能不能还原出来原文来。

准备工作,先将Util类以及那20个解码类什么的复制到工程里面去,因为没有用到第三方类库嘛,所以这里调整调整就好了。记住包名必须是一样的,不要改动。

所有的准备都好了,那么测试一下模拟机,点击一下看是不是可以解码呢?

可以看到,通过android的模拟解码,实现了解码操作。那么只要我们能够将这个模拟机封装为一个接口服务就可以了。至于怎么进行封装接口服务,还没有搞明白。不过思路就是:通过 https://github.com/yanzhenjie/AndServer 通过这个服务来完成。至于里面的DecodeUtil类的实现方式,索性将整个工程打包一下吧。见:安卓解码下载链接

现在解码工作高一段落,接下来就是java实现链接请求数据的步子了。

首先是token的请求获取:这个是没有问题的,也就是说服务器将这个和文章搜索是分开的,因为这个非常快。

package com.court.bigdata.crawler.job.newapp;

import java.util.Date;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import com.alibaba.fastjson.JSON;
import com.court.bigdata.crawler.util.CommonUtil;
import com.court.bigdata.crawler.util.RandomProxy;

public class TokenUtil {
    
	private static Date start;
	private static String token;
	
	public static String token() {
		
		//限制在10分钟内
		if(token == null || start == null || (System.currentTimeMillis()-start.getTime()) > 550*1000){
			start = new Date();
			
			String timespan = CommonUtil.transDate(start, "yyyyMMddHHmmss");
			//获取TOKEN 值 10分钟有效
			try {
				Document doc = Jsoup.connect("http://wenshuapp.court.gov.cn/MobileServices/GetToken")
				.header("Host", "wenshuapp.court.gov.cn")
				.header("Accept", "*/*")
				.header("timespan", timespan+"")
				//.header("nonce", "jhao")
				//.header("signature", "60c89ad2f3fa6917d88b4e4efb18a930")
				.header("Accept-Encoding", "gzip, deflate")
				.header("Accept-Language", "zh-Hans-CN;q=1")
				.header("devid", "b69ed310358d42219235e88ba199b3b6")
				.header("User-Agent", "wenshuapp/1.1.0 (iPhone; iOS 10.0.2; Scale/2.00)")
				.header("Connection", "keep-alive")
				.header("Content-Type", "application/json")
				.ignoreContentType(true)
				.proxy(RandomProxy.getRandomProxyIP(),80)
				.requestBody("{\"app\":\"cpws\"}")
				.post();
				
				token = JSON.parseObject(doc.text()).getString("token");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return token;
	}
}

然后就是请求列表测试,结果就是始终返回的数据是空,不知道是本机IP问题还是其他问题,请求方式就是Charles里面的封装成上面代码相似的代码就可以了。安卓解码测试工程:https://qianjieyun.com/data_452048A318294BA5B4C8AE253D58A954.html


看来还得继续研究才可以啊。over---


猜你喜欢

转载自blog.csdn.net/fhg12225/article/details/80626260
今日推荐