HarmonyOS鸿蒙Next中使用Proxyman进行数据抓包,有些 URL在鸿蒙上抓不到包是什么原因呀, ios 上没问题,但我通过鸿蒙虚拟机能抓到,但真机不行

HarmonyOS鸿蒙Next中使用Proxyman进行数据抓包,有些 URL在鸿蒙上抓不到包是什么原因呀, ios 上没问题,但我通过鸿蒙虚拟机能抓到,但真机不行 【问题描述】:使用Proxyman进行数据抓包,有些 URL在鸿蒙上抓不到包是什么原因呀, ios 上没问题,但我通过鸿蒙虚拟机能抓到,但真机不行

【问题现象】: cke_1216.png

【版本信息】:不涉及

【复现代码】:就是 urlString 里面有 # 时候,URL.parseURL(urlString).params获取不到。用虚拟机可以,真机还不行

let urlObject = urlString.includes("transferRouter?url=") ? url.URL.parseURL(decodeURIComponent(urlString.substring(urlString.indexOf('transferRouter?url=') + ('transferRouter?url=').length)).replace("/#/", "")) : url.URL.parseURL(urlString.replace('#', ''))//url中有#,则获取不到params,应该是鸿蒙bug

【尝试解决方案】:运行没有出现报错,但抓包软件看不到这个 url 的请求


更多关于HarmonyOS鸿蒙Next中使用Proxyman进行数据抓包,有些 URL在鸿蒙上抓不到包是什么原因呀, ios 上没问题,但我通过鸿蒙虚拟机能抓到,但真机不行的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

【解决方案】

开发者你好,Proxyman工具是第三方应用,可以用tcpdump工具进行抓包,或者开发者也可以通过Charles工具抓包。

更多关于HarmonyOS鸿蒙Next中使用Proxyman进行数据抓包,有些 URL在鸿蒙上抓不到包是什么原因呀, ios 上没问题,但我通过鸿蒙虚拟机能抓到,但真机不行的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


百度carlife多久上线,

在鸿蒙Next真机上抓包失败,通常是由于系统网络安全策略限制。鸿蒙Next加强了应用沙箱和证书信任机制,真机环境默认可能阻止非系统信任的中间人代理。需检查Proxyman的CA证书是否已正确安装并受系统信任。部分系统级或使用强证书绑定的应用流量可能被加密保护,导致无法抓取。

根据你的描述,问题核心在于真机环境下的网络请求行为与虚拟机不同,导致部分URL(特别是含#的URL)的请求无法被Proxyman等抓包工具捕获。这通常不是HarmonyOS Next的Bug,而是由真机的网络安全策略和默认配置差异导致的。

主要原因和排查方向如下:

  1. HTTPS证书信任问题(最常见)

    • 真机系统(尤其是新版本HarmonyOS)对证书校验更严格。Proxyman等抓包工具需要安装并信任其自定义的CA证书,系统才会允许工具解密HTTPS流量。
    • 排查:请确保你已在HarmonyOS真机的系统级证书存储中正确安装并完全信任了Proxyman的CA证书(通常需要将证书安装为“系统级”或“VPN和应用”用途,而不仅仅是“用户级”)。
  2. 应用自身的网络安全配置

    • 应用可能使用了网络安全性配置(Network Security Configuration)或默认启用了更严格的传输层安全策略。这可能会阻止应用信任用户安装的CA证书,从而让抓包工具无法拦截HTTPS请求。
    • 排查:检查应用是否在module.json5中配置了相关的网络安全策略,或者是否在代码中显式设置了只信任系统证书。
  3. URL片段(#)的处理差异

    • 你代码中提到的#会导致URL.parseURL()解析异常,这可能影响后续网络请求的生成或URL的完整性。虽然你在代码中做了替换处理(replace('#', '')),但真机上该请求可能因其他校验(如签名、完整性检查)未通过而根本没有被发出,或者被系统网络层以其他方式处理/过滤了。
    • 对比:虚拟机环境可能在某些网络策略或校验上更为宽松,因此请求能正常发出并被捕获。
  4. 真机网络环境与代理设置

    • 确保真机的Wi-Fi网络已正确配置了手动代理,指向运行Proxyman的电脑IP和端口。
    • 某些真机系统或运营商网络可能会干扰或过滤特定的代理请求。

建议的排查步骤:

  1. 首先确认HTTPS抓包基础环境:尝试用真机访问一个普通的HTTP网站(非HTTPS),看Proxyman能否抓到包。如果HTTP可以而HTTPS不行,问题几乎可以确定是证书信任问题
  2. 彻底检查证书安装:在真机设置中,找到“安全”或“加密与凭据”相关选项,确认Proxyman的CA证书已安装且处于“已信任”状态(可能需要选择“用于VPN和应用”)。
  3. 检查应用权限:确保你的应用在真机上拥有完整的网络访问权限。
  4. 简化测试:创建一个最简单的HarmonyOS Next测试应用,只发送一个到你目标URL的请求(先处理掉#),看在真机上能否被抓到。这可以排除是特定应用复杂逻辑的影响。
  5. 查看系统日志:通过hdc shell logcat等命令查看真机系统日志,过滤网络相关错误,看是否有证书验证失败等报错。

总结:问题焦点应放在真机与虚拟机在HTTPS证书信任、应用网络安全策略上的差异,以及含#的URL经你代码处理后,在真机环境中是否仍能生成有效的、可被代理拦截的网络请求。从虚拟机正常而真机失败来看,环境差异是主因,而非API本身的功能性Bug。

回到顶部