[Chrome源码阅读] 理解Browser进程

Pywinauto+某应用程序(学习至第9讲)--受阻 受阻点使用pywinauto,chrome legacy window下控件无法定位。因其下为非标准控件,故转战pyautogui。1、选择应用程序窗口中,针对窗口类型/窗口标题操作,容易报错。 目前可选项只有: 使用正确的窗口标题也无法做到2、窗口最小化时,无法进行恢复正常大小操作;无法进行指定应用程序打开操作;1、在线安装 2、离线安装 2、自动化的切入点–后端技术、程序个数 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qdJntpUS-1656467044603)(C 阅读详情

首先贴出一张来自于Chrome官网上design document上的图。这张图描述了Browser进程中主要几个类之间的相互关系。

这张图仅仅列出了Browser进程里的2个线程:UI线程和IPC线程。UI线程是主线程,主要负责整个UI的渲染和消息的响应,包括自身的消息和从Render 进程发过来的消息。IPC线程负责Browser进程与Render进程之间的通信和网络资源消息的过滤。

一个Render Process Host对应一个Channel Proxy,负责跟一个Render Process通信,同时多个Render View Host可以share同一个Render Process Host,对应Render进程中的多个RenderView。RenderViewHost以IPC::Channel::Listener的身份出现在RenderProcessHost的listeners_列表中。一个WebContents对应一个RenderViewHost,以RenderViewHostDelegate的身份出现在RenderViewHost中。

当一个RenderProcessHost(BrowerRenderProcessHost的基类)初始化在主线程上是,它也同时创建了一个新的RenderProcess和一个ChannelProxy IPC对象实例,这个IPC::ChannelProxy会建立一个命名管道连接到render进程。需要注意的是IPC::ChannelProxy运行在IPC线程中,监听着那个命令管道,同时自动的将接收的消息转发到RenderProcessHost。

3.渲染进程里的多个线程 一个Tab页里的所有执行任务都是在进行的,其中包括:页面渲染、JS执行、事件循环、异步Http请求等。请牢记,下面来看看主要包含的线程GUI即Graphical User Interface,图形用户界面。该线程是由驱动的,主要任务如下:注意:,JS引擎线程执行时,GUI渲染线程会被挂起,GUI更新会被推入到队列中立即执行顾名思义,就是由JS引擎驱动,执行JS代码的线程,主要任务如下:注意:JS是单线程的,且与GUI渲染线程互斥,意味着当JS执行过长,可能会造成页面渲染不连贯,会造成堵塞归属于浏览器而非JS 阅读详情

相关推荐

深度强化学习制作森林冰火人游戏AI(三)向游戏输出键盘控制信息

概述 本文讲如何通过python发送键盘控制命令控制游戏 前篇:深度强化学习制作森林冰火人游戏AI(二)获取游戏屏幕 获取窗口句柄 窗口句柄就像是进程唯一process id 一样,应该是每个窗口有唯一的handle 获取窗口句柄的方法 window_name="FlashPlay" handle=windll.user32.FindWindowW(None, window_name) 嗯,没错,复制上篇文章的 查询句柄的子句柄 一个句柄下面可能还有其他的句柄,就像是程序下面挂着几个其他的子程序一样 #h

蛇皮怪皮蛇的博客 2153

[Chrome源码阅读]Chrome启动代码流程1

Chrome启动代码流程:(v2.0版,Windows平台) 应用程序启动过程: 1. WinMain函数为入口点,定义在文件\chrome\app\chrome_exe_main.cc文件中(位于chrome_exe工程项目中) 2. WinMain从注册表中找到当前版本的子目录,然后装载chrome.dll文件。如果没找到,则直接从当前exe目录查找dll文件,并装载。

zeroom的技术专栏 5462

Turbo Browser实测:基于Chromium的开源轻量浏览器,冷启动快内存占用低

现代浏览器的功能日益丰富,但随之而来的高内存占用与缓慢冷启动让不少用户困扰。基于Chromium内核的开源浏览器方案,通过精简默认配置、优化多进程调度与后台标签页策略,在保留网页兼容性和扩展生态的同时,实现了更快的启动速度与更低的系统资源占用。这种轻量定制思路尤其适合内存有限的办公电脑、旧笔记本以及需要长期开启大量标签页的重度用户。当切换浏览器时,书签、历史记录、密码等数据的迁移往往成为痛点,借助一键导入机制,用户可以无缝从Chrome、Edge、Firefox过渡到新环境。本文以Turbo Browser

weixin_33767813的博客 684

Turbo Browser深度解析:基于Chromium内核的轻量浏览器优化实践

浏览器作为桌面端最基础的工具之一,其性能表现直接影响用户的工作效率与设备资源消耗。在开源生态中,基于Chromium内核进行二次开发已成为构建高性能浏览器的常见路径,而如何在保留完整网页兼容性的同时实现启动加速与资源占用优化,则是开发者关注的核心技术课题。Chromium的多进程架构、渲染引擎及扩展机制为定制化提供了坚实基础,但默认配置往往偏重功能完整而非轻量体验。通过裁剪非必要模块、延迟加载、进程合并与后台页面冻结等手段,可以有效降低冷启动耗时与内存占用。这类优化不仅适用于低配置设备,也为前端工程师理解浏

weixin_34252090的博客 442

Turbo Browser:基于Chromium的轻量级浏览器,实现极速冷启动与低内存占用

浏览器多进程架构在带来稳定性的同时,也导致内存占用居高不下,尤其对8GB内存的旧电脑,多标签页与IDE并发时常卡顿。轻量级浏览器的价值因此凸显。基于Chromium开源内核,轻量级浏览器通过精简默认模块、优化启动流程、采用更激进的标签页冻结策略,在保留网页兼容性和扩展生态的同时,大幅降低冷启动耗时与内存开销。这类浏览器通常还支持从Chrome等常用浏览器一键迁移书签、密码和历史记录,降低换用成本,适用于旧设备升级、多标签办公、开发者日常调试等场景。Turbo Browser正是这一思路的代表作,以极速冷启动

weixin_34355559的博客 560

Chrome 0Day漏洞深度剖析:从类型混淆到沙箱逃逸的攻防实战

在应用层安全领域,浏览器安全始终是核心焦点,其直接关系到亿万用户的数据与隐私。其安全机制建立在复杂的软件工程原理之上,例如多进程架构和沙箱隔离技术,旨在将网页代码的执行限制在可控的封闭环境内。这些技术的核心价值在于构建纵深防御体系,有效遏制恶意代码对操作系统资源的直接访问。然而,攻击者常通过组合利用内存破坏漏洞与进程间通信缺陷来突破防线。典型的攻击链始于渲染进程中的类型混淆或堆溢出漏洞,攻击者借此获得沙箱内的代码执行能力;随后,通过滥用浏览器进程暴露的高权限IPC接口,实现关键的沙箱逃逸,最终在用户系统上执

hck341204的专栏 430

Chrome DevTools MCP:为AI Agent打造浏览器感知与操控协议

Message Channel Protocol(MCP)是一种面向AI Agent的标准化浏览器交互协议,它在Chrome DevTools Protocol(CDP)基础上构建语义化、跨语言、轻量级的消息通道,解决AI缺乏真实运行时环境感知与可控操作能力的核心瓶颈。其原理是将底层CDP事件抽象为高阶消息(如pageLoaded、findElement),通过gRPC/WebSocket提供统一接口,显著降低AI对DOM、网络、JavaScript执行栈的理解与调用门槛。技术价值在于实现‘所见即所控’的实

weixin_33843947的博客 474

Browser MCP实战指南:用AI语言指令驱动浏览器自动化

在自动化技术领域,自然语言处理与浏览器自动化是两个关键方向。自然语言处理使计算机能够理解人类指令,而浏览器自动化则通过脚本模拟用户操作。两者结合催生了新的技术范式——通过自然语言直接控制浏览器行为。其技术价值在于大幅降低自动化门槛,将复杂的脚本编写转化为直观的指令描述。在应用场景上,这为网页数据监控、竞品分析、自动化测试和个人效率工具带来了革新。本文聚焦Browser MCP协议,它作为连接AI模型与浏览器工具的标准化桥梁,基于Playwright实现精准操作,让用户能够通过AI助手直接完成网页导航、表单填

weixin_33858485的博客 357

Ubuntu安装Chrome与Chromium完整指南:从入门到排错

浏览器是Linux桌面最基础的交互入口,而Chrome与Chromium作为基于Blink内核的主流Web运行时,在Ubuntu系统中承载着开发、调试与日常办公的核心职能。其安装过程涉及APT包管理、GPG签名验证、仓库源配置及依赖解析等Linux软件分发核心机制,远非图形化双击可覆盖。理解Chromium开源轻量特性与Chrome官方版功能完整性差异,有助于根据使用场景(如纯浏览、账号同步、插件生态)做出合理选型;掌握字体渲染、GPU加速、沙箱权限、Wayland适配等常见问题根因,能显著提升中文环境下的

weixin_34074740的博客 403

Comet Browser:AI原生研究协作者与信息检索范式革命

AI浏览器正从‘网页渲染工具’演进为‘知识蒸馏系统’,其核心在于融合大模型推理、实时信源验证与语义结构化提取能力。基于Perplexity技术底座的Comet Browser,通过三重信源验证(TSV)、语义净化层和内容寻址存储(CAS)等关键技术,显著降低信息过载下的认知负荷。它不替代传统浏览器,而是面向产品经理、工程师、研究员等专业用户,提供可追溯、可验证、有时效保障的研究级答案。典型应用场景包括技术尽调、法规追踪、临床数据整合与工程选型决策——本质是将‘搜索行为’升维为‘研究工作流操作系统’。关键词:

weixin_33928137的博客 385

Claude Code深度解析:基于Chrome DevTools Protocol的浏览器内核级操控

Chrome DevTools Protocol(CDP)是现代浏览器自动化的核心通信协议,它允许程序通过WebSocket直接与Chrome渲染进程交互,实现DOM操作、网络拦截、事件模拟等底层能力。相比Selenium等外部驱动方案,CDP具备零延迟、无沙箱限制、原生事件支持等技术优势,广泛应用于动态爬虫、反爬绕过、前端调试与智能代理构建。其关键依赖包括--remote-debugging-port参数启用、targetId会话绑定及版本兼容性(如Chrome 109对referrerPolicy的强制

weixin_30813225的博客 332

Chrome密码本地解密与备份指南:从存储原理到实操详解

密码安全是数据保护的基础,其核心在于加密存储与密钥管理。现代浏览器普遍采用本地加密存储用户密码,通过将加密密钥与操作系统用户凭证绑定的方式实现安全与便捷的平衡。这一技术方案在工程实践中广泛应用,其价值在于允许用户在合法权限下访问自己的加密数据,实现自主备份与迁移。具体到应用场景,当用户需要恢复遗忘的密码、迁移至其他密码管理器或响应安全泄露警告时,本地解密能力至关重要。本文聚焦于Chrome浏览器的密码管理机制,详细拆解其基于DPAPI(Windows)或Keychain(macOS)的加密原理,并提供图形化

Coding 130

Codex桌面智能体:8个插件打通AI执行链

AI智能体(Agent)的核心能力不在于大模型的推理深度,而在于能否在真实操作系统中完成‘感知-决策-执行’闭环。本文聚焦桌面级AI执行技术,解析基于Accessibility API、Chromium DevTools Protocol和原生系统调用的跨应用自动化原理,强调语义理解替代OCR识别、细粒度权限沙箱与离线策略回退等关键技术价值。该能力已广泛应用于自动化报表生成、客户尽调、开发环境克隆等高频办公场景,标志着AI从代码补全工具向本地可执行智能体的关键跃迁。

weixin_30394981的博客 456

浏览器漏洞利用资源宝库:从入门到实战的完整学习路径

浏览器漏洞利用是网络安全领域的关键技术方向,涉及内存安全、沙箱逃逸等核心概念。其原理通常围绕内存破坏漏洞(如UAF、堆溢出)和逻辑缺陷展开,通过精心构造的利用链实现代码执行或权限提升。这项技术的价值在于,它不仅是攻防对抗的实战技能,更是深入理解现代软件安全机制(如JIT编译安全、进程隔离模型)的窗口。在应用场景上,安全研究人员通过分析浏览器漏洞,能够提升漏洞挖掘、逆向工程和利用开发能力。本文聚焦的awesome-browser-exploit项目,正是聚合了漏洞分析、JIT漏洞利用、沙箱逃逸等高质量资源的社

weixin_30279315的博客 416

Chromium源码获取与CEF集成实战:从环境配置到Delphi自动化开发

浏览器内核是支撑现代Web应用和桌面应用混合开发的核心技术,其底层原理涉及进程模型、渲染引擎与JavaScript执行环境。理解其架构有助于实现高效的浏览器自动化与嵌入式集成,在自动化测试、数据采集和桌面应用Web化等场景中具有重要技术价值。本文聚焦于Chromium源码的获取与编译,特别是针对国内网络环境的实用解决方案,并深入探讨如何通过Chromium Embedded Framework (CEF) 在Delphi等桌面开发环境中实现模拟点击等自动化功能,为开发者提供从环境准备到功能实现的完整路径。

weixin_30843605的博客 396

PET,CT图像融合笔记

PET-CT怎样进行图像融合?图像融合实现CT与PET图像的融合 OpenCV实现(附实验结果)

chenran187906的博客 8409

Facebook登录协议逆向实战:从加密参数到完整流程解析(附Python代码)

本文深入解析Facebook登录协议的逆向工程,重点拆解`lgndim`和`encpass`等加密参数的生成逻辑,并提供完整的Python实现代码。通过Base64解码和RSA加密技术,帮助开发者理解并实现Facebook登录流程,同时涵盖工程优化与安全实践。

weixin_30687051的博客 477

Unity2020 发布Android包,下载安装配置JDK、SDK、NDK详细教程

配置成功页面 JDK、SDK、NDK

qq_41263535的博客 1万+

从零开始:使用Labelme完成图像语义分割标注全流程

本文详细介绍了如何使用Labelme工具完成图像语义分割标注的全流程,从环境安装、数据准备到核心标注操作,并重点讲解了如何将标注结果转换为PASCAL VOC等深度学习框架可用的标准数据集格式。文章还提供了关键的避坑指南和高效技巧,帮助初学者快速上手,高效产出高质量的标注数据。

weixin_29073241的博客 491

【报错解决】彻底解决 MySQL 登录报错 ERROR 1045 (28000)

MySQL 报错 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 通常是由于用户名或密码错误、权限不足、服务未启动或配置文件异常导致的。通过检查并确认密码、重置 root 用户密码、授予完整权限、校验配置文件以及确保 MySQL 服务正常运行,可以彻底解决该问题。掌握这一流程不仅能够恢复 root 登录,还能保障数据库的安全性与稳定性。

博客 1749

HyperLynx(三十一)高速串行总线仿真(三)

(5)选择 “File”→ “Open Touchstone”,打开路径 C:\Adv_HL_Tmg\SERDES_Interface\models,选中connector.s4p,单击打开,如图所示。接下来,找出将要分配模型的S参数连接。(12)单击“Assign”按钮,选择模型类型为“Touchstone models”,在库中选择“connector.s4p”,如图所示。(14)单击“OK”按钮,选中“connector.s4p”这一行,单击“Connection Editor”按钮,如图所示。

小幽余生不加糖 3365

【24E】SWT6652 wifi驱动加载失败问题分析及解决方案

修改驱动配置Kconfig。是由于内存分配失败导致。

wgl307293845的博客 219

vxWorks下dosFs文件系统的创建

文件系统,是指操作系统根据目录和文件的组织形式在磁盘设备上应用的一种设备驱动,不同的文件系统对目录和文件有不同的限制(如目录名限制,文件大小限制等)。VxWorks支持多种文件系统,比较重要的有:1、dosFs:适用于块存取设备(比如硬盘、软盘),和MS-DOS文件系统兼容;2、rawFs:提供了一种简单的原始文件系统。该文件系统将整个硬盘当作一个单独的大文件;3、cdromFs:允许系统从按照I

技术联盟 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: [Chrome源码阅读]IPC通信初探
下一篇: [Chrome源码阅读] 理解Thread类实现
zero_lee
博客等级 码龄21年 94粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值