0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Proxyman抓取Android的https请求?

哆啦安全 来源:虎哥Lovedroid 2023-10-19 10:29 次阅读

使用Proxyman抓取Android的https请求

d9cff3b6-6d8a-11ee-939d-92fbcf53809c.png

拦截网络请求

有时,您可能需要测试您的移动应用程序并检查与其关联的所有网络请求。

在网络上,此任务非常简单,只需按Ctrl + Shift + I打开开发人员工具即可。

从那里,您可以导航到网络选项卡并检查与网页相关的所有 HTTP 请求,如下所示:

d9df7c28-6d8a-11ee-939d-92fbcf53809c.png

浏览器中的网络请求

然而,在移动开发方面,过程并不那么简单。与网络不同,没有内置机制可以通过打开开发人员工具轻松检查 HTTP 请求。

在这篇博文中,我们将探索通过使用代理来拦截网络请求的迷人世界。我们将指导您逐步设置和配置代理服务器,该服务器将充当您的设备和网络之间的中介。

通过利用代理服务器的功能,我们能够拦截、检查和分析所有传入的网络请求。这为应用程序的调试、性能优化和安全分析开辟了无限可能。

为了更容易理解,我将这个过程分为五个步骤。这些都是:

1.设置 Android 模拟

2.代理设置

3.准备证书

4.部署证书

5.在 Android 模拟器上设置代理 让我们详细探讨每个步骤。

1. 设置Android模拟器

要开始此过程,您需要安装 Android Studio。 成功安装后,启动 Android studio。在窗口顶部的工具栏上,找到并单击菜单Tools。之后Device Manager从下拉菜单创建所需要的设备并运行设备。

d9eb1d3a-6d8a-11ee-939d-92fbcf53809c.png

avd

首先,使用该命令emulator -list-avds显示系统上所有已安装模拟器的列表。此命令将为您提供可用设备的名称。从列表中确定您要运行的设备的名称。

一旦确定了要启动的设备,就可以使用该emulator -avd deviceName命令。deviceName将命令中的名称替换为所需设备的实际名称。该命令将使用指定的设备启动模拟器。

确保您已设置模拟器命令正常工作所需的所有环境变量非常重要。这将确保命令被识别并成功执行。

da043158-6d8a-11ee-939d-92fbcf53809c.png

列出设备

设置 Android 模拟器后,您可以选择从APKMirror下载并安装所需应用程序的 APK 文件。APKMirror 是一个信誉良好的网站,您可以在其中找到各种 Android 应用程序的各种 APK 文件。

下载 APK 文件后,您可以继续将其安装在 Android 模拟器上。您可以将下载的 APK 文件拖放到模拟器窗口中,也可以使用模拟器的文件传输机制导入 APK 文件。

2. 代理设置

在继续安装代理之前,必须确保 OpenSSL 和 Android 调试桥 (ADB) 已正确设置。以下是您应该遵循的步骤:

如果您尚未安装OpenSSL ,请先在您的系统上安装OpenSSL 。有关安装过程,请参阅特定于您的操作系统的文档。openssl version安装后,您可以通过在终端或命令提示符中运行命令来验证安装。如果安装正确,这将显示 OpenSSL 版本。

da0d95c2-6d8a-11ee-939d-92fbcf53809c.png

检查 OpenSSL 版本

接下来,确认您可以从终端或命令提示符访问 Android 调试桥 (ADB),这一点很重要。使用该命令adb version检查 ADB 是否可访问且配置正确。如果命令返回ADB版本,则表示设置正确。

da1bf162-6d8a-11ee-939d-92fbcf53809c.png

成功设置 OpenSSL 并确认对 ADB 的访问权限后,您可以继续安装代理。在本教程中,我们将下载并使用Proxyman作为示例工具。但是,您可以将相同的原则应用于其他类似的工具,例如Charles Proxy或mitmProxy。

3. 准备证书

为了解密应用程序请求,Proxyman 生成自定义 SSL 证书。要获取此证书并将其配置为与 Android 操作系统一起使用,请执行以下步骤:

打开您的网络浏览器并访问以下链接。您可以通过此链接下载 Proxyman SSL 证书。下载证书后,找到保存证书的文件夹:

http://proxy.man/ssl

da3256a0-6d8a-11ee-939d-92fbcf53809c.png

找到下载文件的文件夹

•为了确保证书文件具有 Android 操作系统所需的正确格式,您需要对其进行重命名。打开命令提示符并导航到证书所在的文件夹。之后运行此命令:

hashed_name=`opensslx509-informPEM-subject_hash_old-inproxyman-ca.pem|head-1`&&cpproxyman-ca.pem$hashed_name.0ThiscommandusesOpenSSLtogenerateahashednameforthecertificateandthenrenamesthefileaccordingly.Byfollowingthesesteps,youobtainthecustomSSLcertificatefromProxymanandrenameittotheformatexpectedbyAndroidOS.ThiscertificateisessentialfordecryptingapprequestsandenablingProxymantointerceptandanalyzethenetworktraffic.

此命令使用 OpenSSL生成证书的哈希名称, 然后相应地重命名文件。通过执行以下步骤,您可以从Proxyman获取自定义SSL 证书,并将其重命名为Android 操作系统所需的格式。

此证书对于解密应用程序请求并使Proxyman能够拦截和分析网络流量至关重要。

此命令在 Windows Power shell 上不起作用,因此我在 Git Bash 终端上运行了此命令:

da3686e4-6d8a-11ee-939d-92fbcf53809c.png

在 Git bash 上运行命令

命令执行成功,并.0在同一文件夹中生成了一个扩展名的文件:

da4001ec-6d8a-11ee-939d-92fbcf53809c.png

获取Android证书

4. 部署证书

我们在上一步中生成的文件.0是将要添加到 Android 模拟器中的证书。为此,我们首先打开终端并列出可用的 AVD:

emulator-list-avds

从可用的 AVD 中,我们将使用以下命令运行所需的 AVD:

emulator-avd-writable-system

请注意,我们使用-writable-system标志来启动具有可写系统权限的 AVD,从而允许修改。之后我们需要打开另一个终端并运行以下命令:

adbroot

此命令以 root 权限重新启动 ADB 守护进程。之后,我们运行此命令以禁用设备上的安全启动验证:

adbshellavbctldisable-verification

接下来我们使用以下命令重新启动设备:

adbreboot

设备重新启动后,运行以下命令以 root 身份重新启动 ADB:

adbroot

通过执行以下命令将分区重新挂载为读写:

adbremount

如果 ADB 提示您重新启动设备,请adb reboot再次运行,然后运行adb root和adb remount。现在我们准备.0使用以下命令将重命名的 SSL 证书文件(我们之前生成的文件)推送到设备,并替换为证书文件的实际路径:

adbpush/system/etc/security/cacerts

此命令将证书文件复制到设备上的相应目录。现在我们将通过运行以下命令为证书文件设置正确的权限:

adbshellchmod664/system/etc/security/cacerts/

现在我们需要使用以下命令最后一次重新启动设备:

adbreboot

设备将重新启动,并将部署 SSL 证书。我们已成功将 SSL 证书部署到您的 Android 模拟器中。这将允许模拟器识别并信任该证书,从而使 Proxyman 能够拦截和分析来自设备的网络流量。

现在要验证 Android 设备上的证书,您可以导航到Android 设备设置Trusted Credentials中的System部分,您可以找到选项卡下列出的证书。这确认证书已成功安装并被您的 Android 设备识别:Encryption & CredentialsProxymanLLCSystem

da4b87f6-6d8a-11ee-939d-92fbcf53809c.png

验证证书

5. 在Android模拟器上设置代理

最后一步涉及我们配置 Android 模拟器以使用我们设置的 Proxyman 代理。为此,请在您的计算机上启动 Proxyman。在 Proxyman 中,导航至Certificate菜单。Install Certificate on Android从下拉列表中选择。Physical Devices从子菜单中选择。请注意,您无需担心该术语Physical Devices,因为我们不会遵循该特定指南。我们只需要此菜单中的一些基本细节:

da5393b0-6d8a-11ee-939d-92fbcf53809c.pngProxyman 上的物理设备

在Android setup guide中,确保复制 IP 地址和端口号。该过程的后续步骤将需要这些详细信息

da5cdc0e-6d8a-11ee-939d-92fbcf53809c.png

复制 IP 和端口号

接下来是转到 Android 模拟器并单击菜单图标,如屏幕截图所示:

da647e50-6d8a-11ee-939d-92fbcf53809c.png

菜单按钮

单击Settings侧栏中的选项。单击后,Settings,您可以继续导航到该Proxy选项卡:

da75d542-6d8a-11ee-939d-92fbcf53809c.png

导航至设置

在代理选项卡中,选中该Manual proxy configuration选项。之后粘贴我们从ProxymanAndroid setup guide步骤复制的 IP 地址和端口并点击apply按钮:

da8e3772-6d8a-11ee-939d-92fbcf53809c.png

配置IP和端口号

我们已经成功完成了拦截来自 Android 设备的 HTTP 请求的所有必要设置步骤。现在,我们可以启动Proxyman并在 Android 模拟器上运行应用程序。当我们使用应用程序时,Proxyman将捕获并显示与网络请求相关的所有相关详细信息和数据,为我们提供有关应用程序通信的宝贵见解和可见性。

da99ec48-6d8a-11ee-939d-92fbcf53809c.png

使用Proxyman拦截网络请求






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android系统
    +关注

    关注

    0

    文章

    56

    浏览量

    13185
  • 模拟器
    +关注

    关注

    2

    文章

    817

    浏览量

    42698
  • OpenSSL
    +关注

    关注

    0

    文章

    20

    浏览量

    8587
  • ADB驱动
    +关注

    关注

    0

    文章

    13

    浏览量

    6234
  • HTTP接口
    +关注

    关注

    0

    文章

    21

    浏览量

    1625

原文标题:使用Proxyman抓取Android的https请求

文章出处:【微信号:哆啦安全,微信公众号:哆啦安全】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    使用curl+wget抓取网页方法

    Linux抓取网页,简单方法是直接通过 curl 或 wget 两种命令。curl 和 wget 命令,目前已经支持Linux和Windows平台,后续将介绍。curl 和 wget支持协议curl
    发表于 02-25 09:54

    CC2540能否抓取Android手机之间的数据包?

    现在使用Android手机与CC2564MODN进行通信,请问利用packet sniffer和CC2540 USB Dongle能否抓取cc2564MODN与Android手机之间的数据包?
    发表于 03-31 16:35

    TLS-V1.2 HTTPS请求吞吐量非常差

    测试与FRIERTOS + LWIP建立在43438。与TLS-V1.1相比,TLS-V1.2 HTTPS请求吞吐量非常差。TLSV1.1每分钟发送的HTTPS请求数是TLSV1.2的
    发表于 10-23 15:14

    LwIP+STM32 HTTP和HTTPS请求格式无数据返回

    ;value":0} 参照上面的例子做HTTPS请求就无数据返, 通过chrome浏览器的插件postman对HTTPS请求抓取
    发表于 01-17 07:44

    【技术杂谈】从数据抓取到可视化分析

    点击搜索结果“下一页”,查看网络数据的交互情况,可以在 XHR 选项卡发现真正的数据加载请求:尝试抓取:第一步:模拟发送请求,尝试抓取数据。带上请求
    发表于 07-11 09:30

    Fiddler抓取手机app请求报文的实现步骤?

    Fiddler抓取手机app请求报文
    发表于 11-04 09:46

    RK3288 Android6.0系统的Audio录音PCM数据抓取过程简析

    1、Audio录音PCM数据抓取流程介绍  Platform: Rockchip  OS: Android 6.0  Kernel: 3.10.92  当录音异常时需要把数据dump出来判断问题出在哪一层,RK虽然在HAL层已经提供了dump方法,但有点问题:  原作者:
    发表于 11-14 18:19

    使用nodemcu发出一个https get in lua请求不起作用怎么解决?

    嗨,我应该使用 nodemcu 发出一个 https get in lua 请求。我尝试了 .net 模块和 http 模块,但都不起作用。有人能帮我吗?
    发表于 04-27 07:25

    Android开发的各大网络请求库实际案例

    Android开发的 各大网络请求库的实际案例。
    发表于 09-14 20:21 4次下载

    Android设计搜索体验

    Theresa has you covered. Learn more at: https://software.intel.com/android https://software.intel.com/ux htt
    的头像 发表于 10-15 09:09 1631次阅读

    HTTPS为什么是安全的

    HTTPS出现之前,所有请求都是以明文方式送出的,那么如果有人在传输途中偷听或者抓包的话,你的所有通信内容都会泄漏。比较安全的方法是将通信内容加密在发送给对方。加密方法有两种,对称加密和非对称加密。
    发表于 06-11 08:00 0次下载
    <b class='flag-5'>HTTPS</b>为什么是安全的

    图文详解:为什么HTTPS是安全的

    HTTPS出现之前,所有请求都是以明文方式送出的,那么如果有人在传输途中偷听或者抓包的话,你的所有通信内容都会泄漏。 比较安全的方法是将通信内容加密在发送给对方。
    的头像 发表于 07-02 14:47 2031次阅读
    图文详解:为什么<b class='flag-5'>HTTPS</b>是安全的

    HTTPS如何保证数据安全?讲得很细!

    如何保证数据安全性3.对称加密和非对称加密4.HTTPS请求过程5.如何防止数字证书被篡改6.单双向认证1为什么说HTTP不安全?HTTP本质上就是一个TCP连接
    的头像 发表于 11-01 16:34 542次阅读
    <b class='flag-5'>HTTPS</b>如何保证数据安全?讲得很细!

    http和https的区别

    1.1 http协议格式是什么 请求报文格式:请求行、请求头、空一行、请求请求行包括:请求
    的头像 发表于 11-10 16:42 536次阅读
    http和<b class='flag-5'>https</b>的区别

    logcat命令抓取日志方法

    命令抓取日志 logcat -b main -b system -b crash -r 1024 -n 5 -f android.log -v threadtime -b:加载可供查看的缓冲区的日志
    的头像 发表于 11-23 17:31 539次阅读
    logcat命令<b class='flag-5'>抓取</b>日志方法