android 抓包 okhttp,Android端App抓包小工具[okhttp_poker]

Android端App抓包小工具[okhttp_poker]

Android端App抓包小工具[okhttp_poker]

OkHttpLogger-Frida

Frida 实现拦截okhttp的脚本,只针对Android端使用okhttp框架发送http请求的拦截,用途不大,仅学习交流使用!

github : https://github.com/siyujie/OkHttpLogger-Frida

本菜鸡学习Frida的练手项目,欢迎大家star,也求大佬们指点!

使用说明

首先将 okhttpfind.dex 拷贝到 /mnt/sdcard/ 目录下,然后给目标App授予存储权限。

例:frida -U com.example.demo -l okhttp_poker.js

接下来使用okhttp的所有请求将被拦截并打印出来。

扩展函数:

history() 会打印出所有的被抓到的请求信息

resend(index) 重新发送请求 例子: resend(0) 重新发送第一个请求

如果项目被混淆,那么可以使用okhttp_find.js打印出okhttp被混淆后的关键函数名称,然后替换已声明的内容即可。

例:frida -U com.example.demo -l okhttp_find.js

备注 :

okhtpfind.dex 内包含了 更改了包名的okio以及Gson,以及Java写的寻找okhttp特征的代码。

原理:

由于所有使用的okhttp框架的App发出的请求都是通过RealCall.java发出的,那么我们可以hook此类拿到request和response,

也可以缓存下来每一个请求的call对象,进行再次请求,所以选择了此处进行hook。

抓取打印的样例

一次性请求太多会出现打印错乱现象,由于自己太菜,暂时没有解决这个问题,希望求得大佬指点,万分感谢!!!

┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

| URL: https://lng.***.com/api/collect

|

| Method: POST

|

| Headers:

| ┌─Content-Type: application/octet-stream; charset=utf-8

| ┌─Content-Length: 3971

| └─User-Agent: Dalvik/2.1.0 (Linux; U; Android 8.1.0; AOSP on msm8996 Build/OPM1.171019.011) Resolution/1080*1920 Version/6.59.0 Build/6590119 Device/(google;AOSP on msm8996) discover/6.59.0

|

| Body:

| Base64[........]//省略了,太长了

|

|--> END (binary body omitted -> isPlaintext)

|

| URL: https://lng.***.com/api/collect

|

| Status Code: 200 /

|

| Headers:

| ┌─date: Sat, 29 Aug 2020 10:09:28 GMT

| ┌─content-type: text/json; charset=utf-8

| ┌─content-length: 41

| ┌─access-control-allow-origin: *

| ┌─access-control-allow-credentials: true

| ┌─access-control-allow-methods: GET,POST,OPTIONS,HEAD

| └─access-control-allow-headers: Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Client-Build,X-Client-Platform,X-Client-Version,X-Mx-ReqToken,X-Requested-With,X-Sign

|

| Body:

| {"code":0,"msg":"Success","success":true}

|

|

└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

例子2

┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

| URL: http://****/searchByKeywork

|

| Method: POST

|

| Headers:

| ┌─Content-Type: application/x-www-form-urlencoded

| └─Content-Length: 20

|

| Body:

| userId=*****&keyword=run

|

|--> END

|

| URL: http://****/searchByKeywork

|

| Status Code: 200 /

|

| Headers:

| ┌─Content-Type: application/json;charset=UTF-8

| ┌─Transfer-Encoding: chunked

| └─Date: Sat, 29 Aug 2020 10:18:50 GMT

|

| Body:

| {"code":1000,"message":"成功","result":[{"id":"jqjcRQFO2","name":"RUN","remark":"","shareKey":"dRbkPjn

| J2sjVJTP0G","cover":null,"list":null,"index":0,"note":"更新至20200123期"}]}

|

|

└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

星球推荐

里面有好东西呦,分享给大家!

568f5375d29ebcf874ecd1309f011fdb.png

Android端App抓包小工具[okhttp_poker]相关教程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 OkHttp 库实现 Android 与 Spring Boot 的前后交互可以分为以下步骤: 1. 添加 OkHttp 库依赖 在 Android 项目的 build.gradle 文件中添加 OkHttp 库的依赖: ``` dependencies { implementation 'com.squareup.okhttp3:okhttp:4.9.0' } ``` 2. 在 Android 中发送请求 在 Android 中使用 OkHttp 发送请求的代码如下: ``` OkHttpClient client = new OkHttpClient(); String url = "http://localhost:8080/api/user"; // Spring Boot 后接口地址 Request request = new Request.Builder() .url(url) .build(); try (Response response = client.newCall(request).execute()) { String responseData = response.body().string(); // 处理响应数据 } catch (IOException e) { e.printStackTrace(); } ``` 以上代码中,我们创建了一个 OkHttpClient 对象,并指定了 Spring Boot 接口的地址和请求方式,然后使用 client.newCall(request).execute() 发送请求并获取响应数据。 3. 在 Spring Boot 中接收请求 在 Spring Boot 中,我们需要编写接口来接收 Android 发送的请求。示例代码如下: ``` @RestController @RequestMapping("/api") public class UserController { @GetMapping("/user") public User getUser() { // 业务处理 return new User(); } } ``` 以上代码中,我们使用 @RestController 和 @RequestMapping 注解来定义一个接口,然后在接口中处理业务逻辑,最后返回一个 User 对象。 4. 在 Android 中处理响应数据 在 Android 中,我们可以在 try 代码块中通过 response.body().string() 获取到响应数据,然后对数据进行处理。例如,我们可以将响应数据解析成 JSON 格式并显示在界面上: ``` try (Response response = client.newCall(request).execute()) { String responseData = response.body().string(); JSONObject jsonObject = new JSONObject(responseData); String username = jsonObject.getString("username"); String email = jsonObject.getString("email"); // 将数据显示在界面上 } catch (IOException | JSONException e) { e.printStackTrace(); } ``` 以上代码中,我们使用 JSONObject 类将响应数据解析成 JSON 格式,并从中获取到 username 和 email 的值,最后将这些值显示在界面上。 至此,我们就完成了 Android 和 Spring Boot 的前后交互。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值