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。

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

复制代码
curl -x 127.0.0.1:8888 http://www.baidu.com

配置代理

@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。

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

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

随后再次请求,设置代理和根证书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下)

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

相关推荐
左手厨刀右手茼蒿9 分钟前
Flutter 三方库 k_m_logic 的鸿蒙化适配指南 - 构建声明式的业务逻辑状态机、助力鸿蒙端复杂交互流程的解耦与重构
flutter·harmonyos·鸿蒙·openharmony·k_m_logic
钛态12 分钟前
Flutter 三方库 result_type 深入鸿蒙强类型返回栈跨界交互适配:肃清空指针回调与运行时崩溃、大幅增注接口安全壁垒且提升多隔离桥接数据抛出健壮性-适配鸿蒙 HarmonyOS ohos
flutter·交互·harmonyos
lxysbly12 分钟前
鸿蒙街机模拟器app下载
华为·harmonyos
左手厨刀右手茼蒿12 分钟前
Flutter 三方库 invertible 的鸿蒙化适配指南 - 实现极致的撤销与重做流、助力鸿蒙端高交互编辑类应用开发
flutter·harmonyos·鸿蒙·openharmony
加农炮手Jinx16 分钟前
Flutter 三方库 fast_i18n 的鸿蒙化适配指南 - 掌握类型安全的国际化编译技术、助力鸿蒙应用构建全球化且极速响应的多语言交互体系
flutter·harmonyos·鸿蒙·openharmony·fast_i18n
钛态17 分钟前
Flutter 三方库 test_process 的鸿蒙化适配指南 - 实现具备外部进程交互与命令行输出校验的集成测试套件、支持端侧 CLI 工具与自动化脚本协同实战
flutter·harmonyos·鸿蒙·openharmony·test_process
想你依然心痛2 小时前
HarmonyOS 5.0车机应用开发实战:基于方舟引擎的智能座舱多模态交互系统
华为·交互·harmonyos
前端郭德纲2 小时前
JavaScript原生开发与鸿蒙原生开发对比
开发语言·javascript·harmonyos
23zhgjx-zgx2 小时前
华为ensp:Easy-ip方式和No-PAT地址池配置源NAT
服务器·网络·华为·ensp
码农垦荒笔记4 小时前
智谱 GLM-5.1 正式发布:华为芯片训练的开源模型编码能力达 Claude Opus 4.6 的 94.6%
华为·开源·glm-5.1·claude替代方案·国产ai芯片