Android深入Android Other技术

Android抓包从未如此简单

2022-07-19  本文已影响0人  super可乐

作者:lygttpod
链接:https://juejin.cn/post/7119083753376317448
更多资讯请关注公众号【敲代码的小竹】

一、情景再现:

有一天你正在王者团战里杀的热火朝天,忽然公司测试人员打你电话问为什么某个功能数据展示不出来了,昨天还好好的纳,是不是你又偷偷写bug了。。。WTF!,你会说:把你手机给我,我连上电脑看看打印的请求日志是不是接口有问题。然后吭哧吭哧搞半天看到接口数据返回的格式确实不对,然后去群里丢了几句服务端人员看一下这个接口,数据有问题。然后有回去打游戏,可惜游戏早已结束,以失败告终,自己还被无情的举报禁赛了。。。

人生最痛苦的事莫过于此。假如你的项目已经集成了抓包助手,并且也给其他人员介绍过如何使用,那么像这类问题根本就不需要你再来处理了,遇到数据问题他们第一时间会自己看请求数据,而你就可以安心上王者了。

二、Android抓包现状

目前常见的抓包工具有Charles、Fiddler、Wireshark等,这些或多或少都需要一些配置,略显麻烦,只适合开发及测试人员玩,如果产品也想看数据怎么办纳,别急,本文的主角登场了,你可以在项目中集成AndroidMonitor,只需两步简单配置即可实现抓包数据可视化功能,随时随地,人人都可以方便快捷的查看请求数据了。

三、效果展示

俗话说无图无真相

四、如何使用

抓包工具有两个依赖需要添加:monito和monitor-plugin

Demo下载体验

源码地址

1、monitor接入

添加依赖

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

-备注: 使用debugImplementation是为了只在测试环境中引入

2、monitor-plugin接入

  1. 根目录build.gradle下添加如下依赖
    buildscript {
        dependencies {
            ......
            //monitor-plugin需要
            classpath 'io.github.lygttpod:monitor-plugin:0.0.1'
        }
    }


2.添加插件

    在APP的build.gradle中添加:

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


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

3、 个性化配置

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

4、 proguard(默认已经添加混淆,如遇到问题可以添加如下混淆代码)

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

5、 温馨提示

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

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

6、如何使用

7、关键原理说明

五、最后

在使用AndroidMonitor过程遇到任何问题欢迎提Issues,如果对你有帮助,动动你的发财小手点个赞吧!

上一篇下一篇

猜你喜欢

热点阅读