使用Proxyman抓取Android的https请求

news2025/1/17 5:50:42

使用Proxyman抓取Android的https请求

拦截网络请求

有时,您可能需要测试您的移动应用程序并检查与其关联的所有网络请求。在网络上,此任务非常简单,只需按Ctrl + Shift + I打开开发人员工具即可。从那里,您可以导航到网络选项卡并检查与网页相关的所有 HTTP 请求,如下所示:
浏览器中的网络请求

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

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

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

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

  1. 设置 Android 模拟器
  2. 代理设置
  3. 准备证书
  4. 部署证书
  5. 在 Android 模拟器上设置代理
    让我们详细探讨每个步骤。

1. 设置Android模拟器

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

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

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

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

列出设备
设置 Android 模拟器后,您可以选择从APKMirror下载并安装所需应用程序的 APK 文件。APKMirror 是一个信誉良好的网站,您可以在其中找到各种 Android 应用程序的各种 APK 文件。下载 APK 文件后,您可以继续将其安装在 Android 模拟器上。您可以将下载的 APK 文件拖放到模拟器窗口中,也可以使用模拟器的文件传输机制导入 APK 文件。

2. 代理设置

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

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

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

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

https://proxyman.io/
https://www.charlesproxy.com/

3. 准备证书

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

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

http://proxy.man/ssl
找到下载文件的文件夹

  • 为了确保证书文件具有 Android 操作系统所需的正确格式,您需要对其进行重命名。打开命令提示符并导航到证书所在的文件夹。之后运行此命令:
hashed_name=`openssl x509 -inform PEM -subject_hash_old -in proxyman-ca.pem | head -1` && cp proxyman-ca.pem $hashed_name.0This command uses OpenSSL to generate a hashed name for the certificate and then renames the file accordingly. By following these steps, you obtain the custom SSL certificate from Proxyman and rename it to the format expected by Android OS. This certificate is essential for decrypting app requests and enabling Proxyman to intercept and analyze the network traffic.

此命令使用 OpenSSL生成证书的哈希名称, 然后相应地重命名文件。通过执行以下步骤,您可以从Proxyman获取自定义SSL 证书,并将其重命名为Android 操作系统所需的格式。此证书对于解密应用程序请求并使Proxyman能够拦截和分析网络流量至关重要。
此命令在 Windows Power shell 上不起作用,因此我在 Git Bash 终端上运行了此命令:
在 Git bash 上运行命令
命令执行成功,并.0在同一文件夹中生成了一个扩展名的文件:
获取Android证书

4. 部署证书

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

emulator -list-avds

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

emulator -avd <avd_name_here> -writable-system

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

adb root

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

adb shell avbctl disable-verification

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

adb reboot

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

adb root

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

adb remount

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

adb push <path_to_certificate> /system/etc/security/cacerts

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

adb shell chmod 664 /system/etc/security/cacerts/<name_of_pushed_certificate>

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

adb reboot

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

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

验证证书

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

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

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

复制 IP 和端口号接下来是转到 Android 模拟器并单击菜单图标,如屏幕截图所示:
菜单按钮

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

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

配置IP和端口号

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1104343.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

绝对有效,牛津《书虫》全系列完整版( 电子书+MP3 )

&#x1f600;前言 因为像看一下牛津《书虫》系类的&#xff08;PDF和音频&#xff09;找了许久不是链接过期就是要密码要会员太烦了所以在这里整理好打包给大家 在文章末尾 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大…

java打包解包总结

使用别人的jar包程序&#xff0c;需要修改其中的相关参数然后重新打包&#xff0c;在此记录一下打包和解包过程。 目录 1.解包操作 2.打包操作 1.解包操作 原始jar包文件 解包 jar xvf test.jar 或者 jar -xvf test.jar 2.打包操作 原始文件 打包&#xff1a; jar cvM0…

Aroid问题笔记 - ViewPager嵌套RecyclerView,降低ViewPager灵敏度

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

强大的下载管理器:Progressive Downloader for Mac

Progressive Downloader for Mac是一种强大的下载管理器&#xff0c;它可以帮助用户更快速、更稳定地下载文件。相比于其他下载工具&#xff0c;PD下载管理器具有很多独特的功能和优势&#xff0c;本文将对其进行详细推广。 在数字化时代&#xff0c;下载已成为我们日常工作中必…

C语言实现已知 XYZ+YZZ=532,其中 X,Y 和 Z 为数字,求出 X,Y 和 Z 的值

完整代码&#xff1a; // 已知 XYZYZZ532,其中 X,Y 和 Z 为数字&#xff0c;编写程序求出 X,Y 和 Z 的值#include<stdio.h>int main(){for (int X 1; X < 10; X){for (int Y 1; Y < 10; Y){for (int Z 0; Z < 10; Z){if ((X*100Y*10ZY*100Z*10Z)532){printf…

技巧 | 如何解决 OBS 系统声音无法捕获问题 | Mac

技巧 | 如何解决 OBS 系统声音无法捕获问题 | Mac 问题描述 由于 macOS 系统限制&#xff0c;桌面音频被禁止&#xff0c;导致在使用 OBS 无法录制桌面音频&#xff0c;只能使用自带麦克风录制。 解决方法 Loopback 介绍 借助 Loopback 的强大功能&#xff0c;可以轻松地…

论坛介绍|COSCon'23 女性论坛(L)

众多开源爱好者翘首期盼的开源盛会&#xff1a;第八届中国开源年会&#xff08;COSCon23&#xff09;将于 10月28-29日在四川成都市高新区菁蓉汇举办。本次大会的主题是&#xff1a;“开源&#xff1a;川流不息、山海相映”&#xff01;各位新老朋友们&#xff0c;欢迎到成都&a…

3+肿瘤+预后模型+甲基化

今天给同学们分享一篇3肿瘤预后模型甲基化的生信文章“Genomic and immunogenomic analysis of three prognostic signature genes in LUAD”&#xff0c;这篇文章于2023年1月17日发表在BMC Bioinformatics 期刊上&#xff0c;影响因子为3。 寻找与免疫治疗相关的标记物是筛选适…

wordpress网站部署了ssl证书之后就排版混乱了

刚给自己的小网站部署了SSL证书&#xff0c;之后就发现https访问主页竟然乱套了。在手机上访问却是正常的。 直接上解决方案&#xff1a; 编辑网站根目录下的wp-config.php文件 在自定义文本处添加以下代码&#xff1a; if ($_SERVER[HTTP_X_FORWARDED_PROTO] https) $_SE…

柔性机器人控制的研究现状及关键技术

柔性机器人是一种新型的机器人&#xff0c;具有柔韧性、灵活性和适应性等特点。本文综述了柔性机器人控制的研究现状及关键技术&#xff0c;包括柔性机器人的应用领域、柔性机器人的机械结构、柔性机器人的控制算法等方面。最后&#xff0c;对未来柔性机器人控制的发展趋势进行…

AWD学习总结 (会持续更新)

防御 一、登录ssh服务器 所有人都要登上去。这里以我自己的服务器为例子。一般使用默认的ssh登录方式&#xff0c;我个人服务器ip是120.46.41.173使用工具是xshell与xftp。 点击新建连接。 输入ip。默认ssh端口22不用改就能连接。 然后点击侧边栏&#xff0c;输入账号密码登…

python find函数

一、 find函数作用&#xff1a; 用于判断字符串是否含有子串&#xff1b; 若包含子串&#xff0c;则返回所在字符串第一次出现的位置索引 若不包含子串&#xff0c;则返回-1 二、find函数语法&#xff1a; 字符串.find(self, sub, startNone, endNone) 源码&#xff1a; sub&a…

说明书SMW200A信号发生器

罗德与施瓦茨SMW200A信号发生器 满足您的所有要求 频率范围介于 100 kHz 至 3 GHz、6 GHz、12.75 GHz、20 GHz、31.8 GHz 或 40 GHz 可选的附加射频路径&#xff08; 100 kHz 至 3 GHz、6 GHz、12.75 GHz 或 20 GHz&#xff09; 通用配置&#xff1a; 从单通道矢量信号发生器到…

14.10 Socket 套接字选择通信

对于网络通信中的服务端来说&#xff0c;显然不可能是一对一的&#xff0c;我们所希望的是服务端启用一份则可以选择性的与特定一个客户端通信&#xff0c;而当不需要与客户端通信时&#xff0c;则只需要将该套接字挂到链表中存储并等待后续操作&#xff0c;套接字服务端通过多…

JavaWeb-10月16笔记

JavaWeb 现实生活中的互联网项目都是javaWeb项目, 包含网络, 多线程, 展示: HTML等其他的前端技术, 界面窗体展示(Swing包,AWT包 窗体), C#,… ** JAVAWeb架构: ** - B/S: 浏览器/服务器 优点: 以浏览器作为客户端, 使用这个软件, 用户不需要下载客户端, 程序更新,不需要…

SNAP报错:No sigmaHHBand[0]

问题描述 使用snap想要直接反演哨兵1号的soil moisture时&#xff0c;提示缺少HH波段&#xff0c;而我去网上下载发现S1也没有这个波段数据提供。 原因 这需要Quad Pol Radarsat-2 SLC数据。双端口S1数据仅具有VV和VH。 Sentinel-1数据仅在双极化条件下采集。目前&#xff…

React Hooks之useReducer

一、useReducer const [state, dispatch] useReducer(reducer, initialArg, init?)useState 的替代方案。它接收一个形如 (state, action) > newState 的 reducer&#xff0c;并返回当前的 state 以及与其配套的 dispatch 方法。数据结构简单用useState&#xff0c;复杂时…

【LeetCode刷题(数据结构与算法)】:有效的括号

首先这里需要用到栈的知识 力扣官方会有相关的栈的实现的接口函数 所以我们这里就直接拷贝一份我们栈的实现的代码 typedef int STDataType;typedef struct Stack {STDataType* a;int top;int capacity; }ST;void STInit(ST* ps) {assert(ps);ps->a NULL;ps->capacity …

自研系统加入license授权(附源码)

1.将ClientDemo&#xff08;源码找作者获取&#xff09;下的cn文件夹的内容导入项目对应的java目录下。 2.将license-config.properties文件导入resources目录下。 3.在项目的pom.xml中添加如下依赖。 <properties><!-- Apache HttpClient --><httpclient>4…

各种语言【Python,Java,Go,Pascal,C++】不解压直接读取压缩包【rar,zip,7z,gz,tar,z...】中文本行

文章目录 &#xff08;零&#xff09;前言&#xff08;一&#xff09;【ZIP】格式&#xff08;1.1&#xff09;Python ⭐️&#xff08;1.2&#xff09;Java ⭐️&#xff08;1.3&#xff09;Golang ⭐️&#xff08;1.4&#xff09;Pascal&#xff08;1.4.1&#xff09;Lazaru…