HarmonyOS应用抓包实战

news/2024/7/21 12:21:12 标签: harmonyos, 华为

Charles抓包原理

Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。

在开发OpenHarmony/HarmonyOS应用开发时,我们使用的是@ohos/axios来进行网络请求。在开发的过程中,我看到很多伙伴使用了Charles来调试与服务器端的网络通讯协议,以及分析网络包的数据,并且收到了很多关于@ohos/axios支持设置代理的issue。

Charles 是在PC端常用的网络封包截取工具,通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。Charles 主要的功能包括:

  • 截取 Http 和 Https 网络封包。
  • 支持重发网络请求,方便后端调试。
  • 支持修改网络请求参数。
  • 支持网络请求的截获并动态修改。
  • 支持模拟慢速网络。

基本使用

首先,打开浏览器访问 Charles官网 ,下载相应系统的 Charles 安装包,然后安装即可:

  • Windows: 运行安装应用程序以在程序菜单中安装 Charles。
  • Mac OS X: 通过双击解压缩下载文件,然后将 Charles 应用程序复制到 Applications 目录中。
  • Linux: Charles 拥有 APT 和 YUM 存储库,如果你有基于 Debian 或基于 Red Hat 的 Linux 发行版,这是安装 Charles 的首选方法。否则,将 tar.gz 文件解压缩到适当的站点。如果您以前安装过 Charles 并且正在进行升级;首先确保 Charles 没有运行,然后安装或复制在以前安上。通过运行 bin/charles 脚本启动 Charles。

启动后,点击ProxyàProxy Setting设置代理端口,如下图设置端口为8888。

image.png

然后,通过如下命令验证代理是否正常启动。

curl -x 127.0.0.1:8888 http://www.baidu.com

image.png

配置代理

@ohos/axios 2.2.0-rc.0及以上版本支持手动代理的设置,只需要保证PC和OpenHarmony开发板在同一个局域网下,即可抓到网络请求包。

// 发送一个get请求,使用代理
axios<string, AxiosResponse<string>, null>({
  method: "get",
  url: 'http://www.baidu.com',
  proxy:{
        host: '192.168.1,23',
        port: 8888,
        exclusionList:[]
}
}).then((res: AxiosResponse) => {
  console.info('result:' + JSON.stringify(res.data));
}).catch((error: AxiosError) => {
  console.error(error.message);
})

CA根证书配置

对于Https请求,我们需要导出CA根证书。依次选择HelpàSSLProxying -->Save Charles Root Certificate 保存成根证书到桌面Desktop.pem。

image.png

然后,点击“HelpàSSLProxyingàInstall Charles Root Certificateà”安装证书,点击Proxy -->  SSLProxy Settings在include添加*..443。

image.png
点击Proxy -->  ProxySettings 勾选Enable transparent HTTP proxying。

image.png
随后再次请求,设置代理和根证书Desktop.pem。

// 发送一个get请求,使用代理,并使用CA根证书
axios<string, AxiosResponse<string>, null>({
  method: "get",
  url: 'https://1.94.37.200:8080/user/getUserByUuid?userUuid=1',
  proxy:{
        host: '192.168.1,23',
        port: 8888  ,
        exclusionList:[]
},
caPath: '', //ca证书路径(应用目录getContext().filesDir + "/Desktop.pem"。目前我是把Desktop.pem放到rawfile目录下,在abouttoaperar时先把证书拷贝到filesDir下)

image.png

提示:如果需要能抓到https接口返回的内容,需要把charles的证书和网站的证书合并(文本文件合并),这样charles显示出返回的数据。

image.png


http://www.niftyadmin.cn/n/5287262.html

相关文章

算法基础之最长公共子序列

最长公共子序列 核心思想&#xff1a; 线性dp 集合定义 : f[i][j]存 a[1 ~ i] 和 b[1 ~ j] 的最长公共子序列长度 状态计算&#xff1a; 分为取/不取a[i]/b[j] 共四种情况 其中 中间两种会包含两个都不取的情况(去掉) 但是因为取最大值 有重复也没事用f[i-1][j] 和 f[i][j-1]表…

MQTT - 笔记

1 Mosquitto 官网 https://mosquitto.org/ 2 Windows环境下安装配置Mosquitto服务及入门操作介绍 Windows环境下安装配置Mosquitto服务及入门操作介绍-CSDN博客 3 开源:MQTT安装与配置使用 【C++】开源:MQTT安装与配置使用_c++ mqtt-CSDN博客 4 一文搞懂Qt-MQTT开发

Vue路由复习

简单使用 Vue的路由是单页面应用。 vue-router4只能在vue3中使用。 vue-router3只能在vue2中使用。 npm install vue-router3 引入插件&#xff1a; import VueRouter from "vue-router" 使用插件&#xff1a; Vue.use(VueRouter) 挂载&#xff1a; router…

基于ssm图书馆智能选座系统设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本图书馆智能选座系统就是在这样的大环境下诞生&#xff0c;其可以帮助使用者在短时间内处理完毕庞大的数据信…

文本编辑器:Sublime Text (安装+汉化)

下载 Sublime Text - Text Editing, Done Righthttps://www.sublimetext.com/Sublime Text官网 支持mac&#xff0c;Linux&#xff0c;Windows 安装 选择安装路径 next install 选择安装位置安装就行了 汉化 进入了主界面按 CTRLshiftp 输入install 选择第一个 弹窗就按确…

最新ChatGPT商业运营网站程序源码,支持Midjourney绘画,GPT语音对话+DALL-E3文生图+文档对话总结

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

【Kafka】Kafka客户端认证失败:Cluster authorization failed.

背景 kafka客户端是公司内部基于spring-kafka封装的spring-boot版本&#xff1a;3.xspring-kafka版本&#xff1a;2.1.11.RELEASE集群认证方式&#xff1a;SASL_PLAINTEXT/SCRAM-SHA-512经过多年的经验&#xff0c;以及实际验证&#xff0c;配置是没问题的&#xff0c;但是业务…

性能暴增的Rope Crystal版本:红宝石(12.25)

文章目录 &#xff08;零&#xff09;版本介绍&#xff08;一&#xff09;主界面调整&#xff08;二&#xff09;模型与性能&#xff08;三&#xff09;创作纪念日 &#xff08;零&#xff09;版本介绍 &#x1f517; Github仓库。 这次圣诞节更新主要是提升性能&#xff01;&…