如何抓包 DevEco Studio模拟器的HTTP请求

如何抓包 DevEco Studio模拟器的HTTP请求?

3 回复

开发者您好,可以采取以下方式解决:

【背景知识】

Charles是一款用于网络调试和分析的代理工具,可以拦截和查看设备与服务器之间的网络通信。通过Charles,可以监视应用程序的网络流量、修改请求和响应,甚至模拟不同的网络条件。其主要功能包括:

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

【解决方案】

需要正确配置Charles和模拟器代理,并将Charles证书安装到模拟器中,详情如下:

  1. 下载安装Charles,启动,设置:Proxy -> Proxy Settings;
  2. help -> SSL Proxying -> Save Charles下载证书到任意文件夹,得到test.pem;
  3. 将test.pem拖入模拟器,模拟器会将文件上传到Download文件夹中;
  4. 打开模拟器进入WLAN中,点击右上角图标安装证书;
  5. 选择CA证书;
  6. 选择Download文件夹中的test.pem;
  7. 配置模拟器代理;
  8. 模拟器中运行如下demo代码,Charles可以抓到相应网址。
import { BusinessError } from '@kit.BasicServicesKit';

@Entry
@Component
struct WebComponent {
  controller: webview.WebviewController = new webview.WebviewController();

  build() {
    Column() {
      Button('loadUrl')
        .onClick(() => {
          try {
            // 点击按钮时,通过loadUrl,跳转到www.example1.com
            this.controller.loadUrl('https://www.example.com');
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      // 组件创建时,加载www.example.com
      Web({ src: 'https://www.baidu.com', controller: this.controller })
    }
  }
}

要抓取DevEco Studio模拟器的HTTP请求,可以使用Charles或Fiddler等抓包工具。首先,在抓包工具中配置代理,设置端口号。然后,在DevEco Studio中配置模拟器的网络代理,将代理地址和端口指向抓包工具的设置。启动模拟器并运行应用,抓包工具将捕获所有HTTP请求和响应数据。确保抓包工具和模拟器在同一网络环境下,以便正确捕获数据。

在HarmonyOS Next开发中,可以通过以下方法抓取DevEco Studio模拟器的HTTP请求:

  1. 使用Charles/Fiddler工具:
  • 配置模拟器代理到主机IP(通常为10.0.2.2)
  • 端口设置为8888(Charles)或8889(Fiddler)
  • 安装并信任Charles/Fiddler的CA证书
  1. 使用Android Studio的Profiler:
  • 在DevEco Studio中运行应用
  • 打开Android Profiler的Network模块
  • 可以实时监控网络请求
  1. 使用adb logcat:
  • 通过adb logcat命令过滤HTTP请求日志
  • 例如:adb logcat | grep “http”
  1. 在代码中添加网络拦截器:
  • 使用OkHttp的Interceptor记录请求日志
  • 或使用HarmonyOS的http调试接口

注意:HarmonyOS Next的网络架构可能有特殊配置要求,建议先确认模拟器的网络连接方式。

回到顶部