抓取app数据保存到数据库

在这里插入图片描述

抓包工具:Charles
推荐一个IOS抓包APP: Stream

Charles入门教程

先根据教程设置:
1.手机链接Charles
2.PC需安装证书,手机需信任(IOS-12到设置-通用-关于本机-证书信任设置),否则无法抓取HTTPS请求
3.手机WIFI配置HTTP代理

抓取请求

在这里插入图片描述

打开APP,刷新列表

在这里插入图片描述

找到发送的请求,可以看到请求方式GET、请求路径、参数、请求头,以及返回的数据等信息

使用Postman调用(GET)

其中请求头中的token、appversion必传

token: 用户登录验证
appversion: 版本如果不传,返回的数据可能会少
Content-Type: GET请求可以不传,POST必须传

在这里插入图片描述

使用java代码调用并保存到数据库

使用RestTemplate来进行远程调用

    RestTemplate restTemplate = new RestTemplate();
    
    // 请求头
    HttpHeaders httpHeaders = new HttpHeaders();
    httpHeaders.add("token", "858714e6-9166-4a42-a0e9-71d4ebc293f6");
    httpHeaders.add("appVersion", " 5.2.3");
    
    HttpEntity<String> httpEntity = new HttpEntity<>(null, httpHeaders);
    
    // 远程调用接口-GET
    ResponseEntity<String> exchange = restTemplate
            .exchange(
                    "URL",
                    HttpMethod.GET,
                    httpEntity, String.class);
    // 返回结果
    String body = exchange.getBody();

最后处理字符串,取需要的数据保存即可

多层调用(POST)

在这里插入图片描述

其实列表的数据并不全,比如要获取姓名、手机号等信息

那么就需要根据列表返回的参数(比如userId),再调接口获取信息

在这里插入图片描述

获取手机号,再次抓包,可以看到请求方式为POST了,请求路径为/call/593120

多抓几次联系方式的包,可以知道路径后面的数字即为userId

点击下面的Text可以获取到POST请求参数

在这里插入图片描述

{
	"from_id": 15293300,    // 多抓几次,判断为业务ID
	"from_type": 1          // 写死的
}

java调用

Postman调用设置请求头和参数就行

主要演示restTemplate带参数调用

    // 用上面的对象,新增Content-Type即可
    httpHeaders.setContentType(MediaType.APPLICATION_JSON);
    // 设置请求参数
    String requestJson = "{\"from_type\":1,\"from_id\":" + map.get("id") + "}";
    
    HttpEntity<String> entity = new HttpEntity<>(requestJson, httpHeaders);
    
    // 远程调用-POST
    ResponseEntity<String> getUserTel = restTemplate
            .exchange("https://user-api.xxxx.com/call/" + userId,
                    HttpMethod.POST,
                    entity, String.class);
                    
    // 根据返回结果格式转换
    String userTelBody = getUserTel.getBody();
    Map userTelMap = JSONUtil.toBean(userTelBody, Map.class);
    Map userTelDataMap = JSONUtil.toBean((JSONObject) userTelMap.get("data"), Map.class);
    
    // 货主联系方式
    String userTel = (String) userTelDataMap.get("mobile");

以上就是一个简单的抓包逻辑

结语

有些APP的请求参数和返回结果都是乱码

1.加密了,要脱壳
2.需要证书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值