IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> (原创)安卓抓包方案分享 -> 正文阅读

[移动开发](原创)安卓抓包方案分享

前言

实际开发过程中,我们需要和后端进行服务联调
在联调的时候,如果测试环境接口有问题,我们就需要催后端来处理。
那么怎么知道是后端的问题呢?
这就需要我们自己拿到接口对应的返回值
要拿到返回值,一般的方案有:
1:Fiddler等抓包软件抓包
2:日志打印
3:AS自带的抓包工具
以上方案各有利弊,但总的来说,还是不是那么方便
那么有没有一种方法,可以自动帮我们完成这些操作呢?
比如我们可以把接口返回的信息做成一个apk
类似leakcanary这种
当我们自己想看的时候,就可以点开这个apk来看。
又或者在通知栏提示,可以点进去查看详情
今天就分享一下这两个方案

方案一

首先推荐的是通知栏的方案:Chuck
具体介绍如下:
Android网络抓包工具–Chuck
Chuck的git地址如下:
添加链接描述
具体使用方法如下:
1:在app下的build.gradle中添加以下依赖:

dependencies {
   debugCompile 'com.readystatesoftware.chuck:library:1.1.0'
   releaseCompile 'com.readystatesoftware.chuck:library-no-op:1.1.0'
 }

2:创建一个ChuckInterceptor实例(需要为其提供上下文),并在构建OkHttp客户端时将其添加为拦截器:

Builder httpClientBuilder = new OkHttpClient.Builder();
if(BuildConfig.DEBUG){
  httpClientBuilder.addInterceptor(new ChuckInterceptor(context));
}

这样就好了
具体效果如图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方案二

这个是由github上的一位老哥提供的
具体介绍如下:
Android抓包从未如此简单
效果如图:
在这里插入图片描述
在这里插入图片描述

使用起来也很简单
第一步:添加依赖

 debugImplementation 'io.github.lygttpod:monitor:0.0.4'

第二步:根目录build.gradle下添加如下依赖

    buildscript {
        dependencies {
            ......
            //monitor-plugin需要
            classpath 'io.github.lygttpod:monitor-plugin:0.0.1'
        }
    }

第三步:在APP的build.gradle中添加

//插件内部会自动判断debug模式下hook到okhttp
apply plugin: 'monitor-plugin'

原则上完成以上两步你的APP就成功集成了抓包工具,很简单有没有,如需定制化服务请看下边的个性化配置

1、修改桌面抓包工具入口名字:在主项目string.xml中添加 monitor_app_name即可,例如:

   <string name="monitor_app_name">XXX-抓包</string>

2、定制抓包入口logo图标:

   添加 monitor_logo.png 即可

3、单个项目使用的话,添加依赖后可直接使用,无需初始化,库里会通过ContentProvider方式自动初始化
 
默认端口8080(端口号要唯一)
    
4、多个项目都集成抓包工具,需要对不同项目设置不同的端口和数据库名字,用来做区分
    
在主项目assets目录下新建 monitor.properties 文件,文件内如如下:对需要变更的参数修改即可

    # 抓包助手参数配置
    # Default port = 8080
    # Default dbName = monitor_db
    # ContentTypes白名单,默认application/json,application/xml,text/html,text/plain,text/xml
    # Default whiteContentTypes = application/json,application/xml,text/html,text/plain,text/xml
    # Host白名单,默认全部是白名单
    # Default whiteHosts = 
    # Host黑名单,默认没有黑名单
    # Default blackHosts = 
    # 如何多个项目都集成抓包工具,可以设置不同的端口进行访问
    monitor.port=8080
    monitor.dbName=app_name_monitor_db

默认已经添加混淆,如遇到问题可以添加如下混淆代码

# monitor
-keep class com.lygttpod.monitor.** { *; }

温馨提示:

虽然monitor-plugin只会在debug环境hook代码,
但是release版编译的时候还是会走一遍Transform操作(空操作),
为了保险起见建议生产包禁掉此插件。

在jenkins打包机器的《生产环境》的local.properties中添加monitor.enablePlugin=false,全面禁用monitor插件

如何使用

1.集成之后编译运行项目即可在手机上自动生成一个抓包入口的图标,点击即可打开可视化页面查看网络请求数据,这样就可以随时随地的查看我们的请求数据了。
2.虽然可以很方便的查看请求数据了但是手机屏幕太小,看起来不方便怎么办呐,那就去寻找在PC上展示的方法,首先想到的是能不能直接在浏览器里边直接看呐,这样不用安装任何程序在浏览输入一个地址就可以直接查看数据
3.PC和手机在同一局域网的前提下:直接在任意浏览器输入 手机ip地址+抓包工具设置的端口号即可(地址可以在抓包app首页TitleBar上可以看到)

暂时就这两种方案,后面有更新的,会继续在这里补充~

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:53:18  更:2022-10-08 20:55:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 2:53:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码