Browser4 icon indicating copy to clipboard operation
Browser4 copied to clipboard

Improved CDP resource type checking in ChromeNavigateEntry

Open platonai opened this issue 2 months ago • 0 comments

Relative Code:


    private fun isMajorRequestWillBeSent(event: RequestWillBeSent): Boolean {
        return !navigateEntry.documentTransferred && event.type == ResourceType.DOCUMENT
    }

    private fun isMajorResponseReceived(event: ResponseReceived): Boolean {
        return !navigateEntry.documentTransferred && event.type == ResourceType.DOCUMENT
    }

    private fun isMinorResource(type: ResourceType): Boolean {
        return type in listOf(
            ResourceType.FONT,
            ResourceType.MEDIA,
            ResourceType.IMAGE,
        )
    }

Improvement:

https://chatgpt.com/s/t_68fcbdcd8c64819180900928074c6ee7

在使用 Chrome DevTools Protocol (CDP) 监听网页网络活动时,要区分「主文档请求(main document)」与「资源请求(resource)」确实很常见,尤其是在编写自动化测试、分析性能或安全检查脚本时。

🧭 一、核心概念

CDP 的网络层事件主要来自 Network domain ,最常用的是:

  • Network.requestWillBeSent
  • Network.responseReceived
  • Network.loadingFinished

当浏览器加载一个页面时:

第一个请求(主文档)通常是 HTML,对应的 type=Document。

后续的图片、CSS、JS、XHR、字体等资源,也都会触发各自的事件,但类型会不同,例如 Script、Stylesheet、Image、XHR。

✅ 二、判断方式(推荐)

判断“主文档请求”与“资源请求”的最可靠方法是结合以下两个字段:

字段 | 来源 | 说明 -- | -- | -- request.frameId | Network.requestWillBeSent | 属于哪个 frame 的请求(主文档为 main frame) type | Network.responseReceived | DevTools 协议内部判定的资源类型,例如 Document、Image、Script 等

platonai avatar Oct 25 '25 12:10 platonai