【HarmonyOS NEXT】鸿蒙忽略证书验证抓包https请求

2,944 阅读1分钟

1. 背景

目前在鸿蒙中的网络请求大致有三种

@ohos.net.http:对应的三方库有axios

@ohos.net.socket:对应的三方库有【httpclient

@kit.RemoteCommunicationKit

1.1 抓包前的前置条件,需要安装Charles证书到真机上

具体步骤可参考这篇文章 juejin.cn/post/737883…

2. 问题

目前在API12 中我个人尝试使用@ohos.net.http 和@ohos.net.socket 均无法使用Charles抓包https请求。个人推测是没有对应的API来忽略Charles的用户证书【有哪位大佬解决了可以评论区评论下】

通过和一些业内大佬交流,小道消息得知,鸿蒙未来主流的网络框架是@kit.RemoteCommunicationKit @ohos.net.http@ohos.net.socket仅做功能维护

于是开始尝试阅读@kit.RemoteCommunicationKit 的开发文档,发现有一个remoteValidation 的属性,该属性的类型有【'system' | 'skip' | CertificateAuthority | ValidationCallback】。看到skip。感觉有戏

screenshot-20240611-133558 (1).png

3. 解决方案

核心代码就是,对应的文档:developer.huawei.com/consumer/cn…

request.configuration = {
  security: {
    remoteValidation: 'skip',
  },
};
import { rcp } from "@kit.RemoteCommunicationKit";
import { BusinessError } from '@kit.BasicServicesKit';

const session = rcp.createSession();
const request = new rcp.Request('https://wanandroid.com/harmony/index/json','GET');
request.configuration = {
  security: {
    remoteValidation: 'skip',
  },
};
session.fetch(request).then((rep: rcp.Response) => {
  console.info(`Response succeeded: ${rep}`);
}).catch((err: BusinessError) => {
  console.error(`Response err: Code is ${err.code}, message is ${err.message}`);
});

image.png

image.png

getimgdata (1).png

本文正在参加华为鸿蒙有奖征文征文活动