安卓app抓包工具(安卓app抓包工具怎么用)

今天主要跟大家介绍一下Android的抓包和防止抓包

抓包工具的话介绍两款抓包工具,Profiter和Charles。

工具环境:

Android Studio 4.2.2

手机Google Pixel 3XL Android 11

使用Profiler 工具抓包

将自己的手机连接到电脑上,然后打开Android Studio 的Profiler

Android Studio 白狐及以下版本的NetWork Inspector 在 Profler 中,大黄蜂版本的NetWork Inspector 在 App Inspection中。

然后app 访问网络会有这样提示:

安卓app抓包工具(安卓app抓包工具怎么用)

我们选择波动 ,可以看到请求的信息

安卓app抓包工具(安卓app抓包工具怎么用)

然后我们点击接口信息之后,可以看到请求的详细信息

安卓app抓包工具(安卓app抓包工具怎么用)

这样我们就可以通过AndroidStudio 的Profiler 轻松的抓取我们App 的网络信息了。

使用Charles 工具抓包

1.安装证书

首先下载Charles ,打开之后点击Help->SSL Proxying -> Install Charles Root Certificate 安装根证书

安卓app抓包工具(安卓app抓包工具怎么用)

然后双击证书,进行信任

安卓app抓包工具(安卓app抓包工具怎么用)

电脑端这就配置完了, 接下来配置 客户端

方式1:

手机端通过浏览器下载证书

安卓app抓包工具(安卓app抓包工具怎么用)

安卓app抓包工具(安卓app抓包工具怎么用)

手机端 对连接wifi 进行代理设置,设置手动代理,将charles 提示的代理地址 设置好,然后charles 就会有一个提示:

安卓app抓包工具(安卓app抓包工具怎么用)

然后我们同意就好了。

然后浏览器输入chls.pro/ssl 进行下载证书,下载完成进行安装即可;不过有时候这种方式无法安装,可以通过方式2 进行安装。

方式2:

通过Help->SSL Proxying -> Save Charles Root Certificate 将证书保存在电脑上

安卓app抓包工具(安卓app抓包工具怎么用)

然后上传到手机端,点击设置-安全-加密与凭证-安装证书-CA证书,选择我们刚刚的证书进行安装即可。

至此,安装证书的步骤我们就完成了。

2.抓包

此时,当我们进行网络访问 的时候,可以在charles上面看到我们访问的数据了

安卓app抓包工具(安卓app抓包工具怎么用)

我们可以通过左下角的Filter 进行地址过滤,找到我们想看的网络数据。

防止抓包

有时候在我们的项目中,因为一些安全问题,我们不想让我们app被抓包,就需要增加一些防止抓包的方法。

数据加密:

我们的接口信息可以采用数据加密的方式,防止信息泄露,这个客户端与后端定义好就可以了。

SSL证书校验:

这种方式需要后端或者运维方面配合,拿到SSL服务器证书。

1.提取证书的公钥

openssl rsa -in certificate.crt -pubout > public_key.pub

2.将 public_key.pub 内地 —begin public key— 和 —end public key— 去除,并合并成一行

cat public_key.pub | grep -v 'PUBLIC' | awk '{printf("%s",$0)}'

得到输出类似:

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMI...

3.利用2命令输出的结果,然后 计算sha256摘要 (下载pubkey-sha256.py)

python pubkey-sha256.py MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMI...

得到的输出类似

SHA256:S8Ff3JCaO4V...

将开头的 SHA256: 改成 sha256/ ,得到

sha256/S8Ff3JCaO4V...

然后在我们的OkHttp中进行配置一下

OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.certificatePinner(new CertificatePinner.Builder()
.add("域名", "sha256/S8Ff3JCaO4V...")
.build());

然后我们再次用charles 进行抓包就是这样的结果:

安卓app抓包工具(安卓app抓包工具怎么用)

虽然存在网络请求记录,但是数据抓不到了。

#####

禁止代理

Okhttp 在建立socket 连接之前,Okhttp 会获取系统的代理信息,如果设置代理,那么通过DNS解析其IP然后使用代理IP来建立socket连接。如果没有设置代理,那么会使用请求中的url的IP地址,来建立连接。

    /**
     * Gets the system-wide proxy selector.
     *
     * @throws  SecurityException
     *          If a security manager has been installed and it denies
     * {@link NetPermission}{@code ("getProxySelector")}
     * @see #setDefault(ProxySelector)
     * @return the system-wide {@code ProxySelector}
     * @since 1.5
     */
    public static ProxySelector getDefault() {
        SecurityManager sm = System.getSecurityManager();
        if (sm != null) {
            sm.checkPermission(SecurityConstants.GET_PROXYSELECTOR_PERMISSION);
        }
        return theProxySelector;
    }

    /**
     * Sets (or unsets) the system-wide proxy selector.
     *
     * Note: non-standard protocol handlers may ignore this setting.
     *
     * @param ps The HTTP proxy selector, or
     *          {@code null} to unset the proxy selector.
     *
     * @throws  SecurityException
     *          If a security manager has been installed and it denies
     * {@link NetPermission}{@code ("setProxySelector")}
     *
     * @see #getDefault()
     * @since 1.5
     */
    public static void setDefault(ProxySelector ps) {
        SecurityManager sm = System.getSecurityManager();
        if (sm != null) {
            sm.checkPermission(SecurityConstants.SET_PROXYSELECTOR_PERMISSION);
        }
        theProxySelector = ps;
    }

OkHttp使用ProxySelector来获取代理信息,在构造OkHttpClient时是可以设置的,其默认值是ProxySelector.getDefault(),该默认值会反应出系统的代理信息。 那么我们就可以提供自己的ProxySelector实现来达到绕过系统代理的能力。

OkHttpClient client = new OkHttpClient.Builder()
 2                             .proxySelector(new ProxySelector() {
 3                                  @Override
 4                                  public List<Proxy> select(URI uri) {
 5                                      return Collections.singletonList(Proxy.NO_PROXY);
 6                                  }
 7                             
 8                                  @Override
 9                                  public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
10                             
11                                  }
12                              }).build();

设置玩完成之后,再用Charles进行抓包的话,已经抓取不到app 的访问信息了。

总结

上述内容我们主要介绍了两种抓包方式:

  1. 使用AndroidStudio 自带的Profiler 进行抓包
  2. 使用Charles

使用Charls 介绍了两种安装证书的方式:

  1. 使用浏览器安装证书
  2. 手动安装证书

三种防止抓包的方式:

  1. 数据加密
  2. 进行SSL证书校验
  3. 禁用代理

希望大家能够通过本文的讲解,能够对抓包有所了解,对反抓包也有方案。

您的点赞,关注就是我最大的动力!

本文部分内容来自互联网,如有疑问请与我们联系。

发布者:币侠,转转请注明出处:https://www.yfhhf.com/baike/45250.html

(0)
                       
上一篇 2022年 11月 14日 上午4:53
下一篇 2022年 11月 14日 上午5:06

相关推荐

  • 社保卡余额就是医保卡余额吗(社保卡的医保余额是什么意思)

    医保卡余额指的是医疗保险个人账户余额。 查询方法很简单,只需要四个步骤即可完成查询。 准备工作或前提条件:1、参加了医疗保险; 2、使用联网手机登录支付宝,并申领了电子社保卡。 申领电子社保卡的步骤可在今日头条首页搜索框中搜索“电子社保卡申请领取步骤”。 第一步:打开电子社保卡,点击“社保查询”。 第二步:进入社保查询首页后找到“医保查询”模块并点击。 第三…

    2022年 9月 7日
    6540
  • 北京小学生暑假放假时间2022(北京小学生暑假放假时间2022年)

    北京市多区发布义务教育政策 近日,北京市多区相继发布义务教育入学政策。 东城:回东城小升初须有户又有房 1 幼升小: 推进以多校划片为主的入学方式 凡年满6周岁(2017年8月31日以前出生)的具有东城区户籍、东城区房屋产权证(法定监护人持有)的适龄儿童均须参加学龄人口信息采集,免试就近入学。针对符合条件的本市非东城区户籍无房家庭适龄子女,东城区教委将通过电…

    2023年 6月 4日
    2010
  • 蓝牙配对不成功怎么办(vivo手机蓝牙配对不成功怎么办)

    @itbang.top最近使用微软“你的手机”时候,在使用呼叫功能时候,发现无法连接蓝牙,尝试N次[震惊]。 调试前,操作系统和手机蓝牙功能已开启,并且操作系统蓝牙服务、驱动等一切正常,但是怎么连接也连接不上,一直提示“已配对”,就是不显示“已连接”。 经过多种误操作,又是重做系统,又是删除驱动,又是调试服务,还是没有解决,最终发现还是系统蓝牙设置问题造成的…

    2023年 5月 5日
    3650
  • 快乐人生电视剧剧情介绍(快乐人生分集剧情介绍)

    #有什么事情做了能让你感觉快乐# 人们总是追求快乐,因为快乐是人生的一种美好体验,让我们感受到生命的充实和意义。然而,快乐的源泉是什么?有什么事情做了能让我们感觉快乐呢?在这篇文章中,我将分享一些创意的方法,让您感受到快乐的力量。 放松自己我们每天都要应对各种各样的压力和挑战,因此放松自己变得十分必要。有很多方法可以达到这一目的,例如冥想、瑜伽、按摩、芳香疗…

    2023年 3月 29日
    3430
  • 鳝鱼烧黄瓜怎么做好吃(鳝鱼烧黄瓜图片)

    2015-05-11 鳝鱼也叫黄鳝,肉嫩味鲜。含有丰富的DHA和卵磷脂,而且是高蛋白噢。 挑选鳝鱼的时候要买那种在水缸里头使劲往下钻的,活力好的。头往上或者不怎么动的就不太好了。 PS:大家看配料表不要惊讶!我们家整体食量较大,而且这天吃的是“独门菜”!(只有一个菜配米饭) 用料 蒜3头 郫县豆瓣酱3勺 青花椒适量 花椒适量 干辣椒段大量 盐适量 味精适量 …

    2023年 4月 22日
    1830

联系我们

不接风险内容

在线咨询: QQ交谈

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信