HarmonyOS 怎么安装证书、抓包

HarmonyOS
3天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

当前网络模块已支持适配Charles工具抓包,配置方式如下:

1、导出证书点击 Help—>SSL Proxying—>Save Charles Root Certificate。导入证书到手机执行命令参考如下:

hdc file send charles.pem(pc上证书路径) /storage/media/100/local/files/Download(手机指定路径)

2、连接手机后执行命令启动证书安装界面:

hdc shell aa start -a MainAbility -b com.ohos.certmanager 

3、选择从存储设备安装,选择指定pem证书。

4、安装Charles证书到系统可信目录,点击Help—>SSL Proxying—>Install Charles Root Certificate—>安装证书—>选择证书存储路径为受信任的根证书颁发机构。

5、设置代理,点击 Proxy—>SSL Proxy Settings—>在Include添加 : 和 *:443 2)点击Proxy—>Proxy Settings—>勾选Enable transparent HTTP proxying。

6、Wifi代理设置,将手机与电脑同一局域网下连接,手机连接WiFi时,点击代理设置为手动,修改设置代理IP,端口为Charles监听的端口,默认为8888可在上一步Proxy Settings中查看和修改。

7、应用抓取http包,App开发时HTTP请求HttpRequestOptions参数设置,可参考文档设置usingProxy为true,表示使用HTTP代理(该字段默认为false 不使用代理),设置caPath(可根据环境使用设置,默认使用系统预设CA)。

http参数设置可参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-http-V5

工具配置可参考博客:https://juejin.cn/post/6844904182588112904

import { fileIo, picker } from '@kit.CoreFileKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { http } from '@kit.NetworkKit'

@Entry
@Component
struct Index {
  @State uri: string = "";

  installCer() {
    const documentSaveOptions = new picker.DocumentSaveOptions() // 创建文件管理器选项实例
    const documentViewPicker = new picker.DocumentViewPicker() // 创建文件选择器实例
    documentViewPicker.save(documentSaveOptions).then((documentSaveResult: Array<string>) => {
      this.uri = documentSaveResult[0];
      console.info('documentViewPicker.save to file succeed and uris are:' + this.uri);
    }).catch((err: BusinessError) => {
      console.error(`Invoke documentViewPicker.save failed, code is ${err.code}, message is ${err.message}`);
    })
  }

  requestBaidu() {
    let req = http.createHttp();
    req.on("headersReceive", (h) => {
      console.info('header: ' + JSON.stringify(h));
    })
    req.request("https://www.huawei.com/");
  }

  build() {
    Column() {
      // 调用 picker 创建证书文件
      Button('安装证书')
        .onClick(() => {
          this.installCer();
        })
      // 将本地(resource/rawfile/test.pem)证书写入手机 内部存储/download 中
      Button('写入证书').onClick(async () => {
        let file = fileIo.openSync(this.uri, fileIo.OpenMode.READ_WRITE);
        let buf: Uint8Array = await getContext(this)
          .resourceManager
          .getRawFileContent('test.pem')
        // uint8buff 转 arraybuf
        let buffer: ArrayBuffer = buf.buffer.slice(0);
        try {
          let writeLen: number = fileIo.writeSync(file.fd, buffer);
        } catch (e) {
          console.info("tag " + JSON.stringify(e))
        }
        fileIo.closeSync(file);
      })
      // 测试抓包
      Button('测试抓包').onClick(() => {
        this.requestBaidu();
      })
    }
  }
}
分享
微博
QQ
微信
回复
3天前
相关问题
HarmonyOS Charles 步骤
882浏览 • 1回复 待解决
发布证书打包的hap安装出错
590浏览 • 1回复 待解决
HarmonyOS如何实现使用 Charles
2991浏览 • 1回复 待解决
HarmonyOS 模拟器问题
62浏览 • 1回复 待解决
charles手机端设置
438浏览 • 1回复 待解决
如何使用Charles工具
2395浏览 • 1回复 待解决
Charles 网络长按无法修改
671浏览 • 1回复 待解决
Charles工具-App开发指导
1340浏览 • 1回复 待解决
webview如何实现charles
1183浏览 • 1回复 待解决
网络请求以及日志
832浏览 • 1回复 待解决
charles流程,有人知道吗?
678浏览 • 1回复 待解决
应用,求解决方案
2020浏览 • 1回复 待解决
HarmonyOS 外部应用怎么trace
72浏览 • 1回复 待解决
HarmonyOS release安装
40浏览 • 1回复 待解决
HarmonyOS 无法安装crt格式的证书
738浏览 • 1回复 待解决
HarmonyOS 调试安装.app安装失败?
47浏览 • 1回复 待解决
HarmonyOS 脚本安装项目
493浏览 • 1回复 待解决
HarmonyOS release无法安装
158浏览 • 1回复 待解决