浏览器
快速跳转
1 浏览器内核
Section titled “1 浏览器内核”同样是”打开一个网页”,为什么用 Chrome、Edge、Safari 打开,有时候看起来不完全一样?这就是浏览器内核差异造成的。
1.1 什么是浏览器内核?
Section titled “1.1 什么是浏览器内核?”简单来说,浏览器内核 是浏览器的核心引擎。它的主要工作有两件:
- 解析与渲染:把从网络上下载下来的 HTML(网页结构)、CSS(样式)、JavaScript(动态交互)各种代码,变成可交互、有颜色、有布局、能点击的网页。
- 提供底层能力:管理 HTTP 请求、解析 URL、处理 Cookie、存储缓存、管理安全策略等。
一张图了解内核的工作流程:
flowchart LR
A["HTML / CSS / JavaScript 源"] -->|"语法解析"| B["DOM 树 + CSSOM 树"]
B -->|"样式计算"| C["Render Tree 渲染树"]
C -->|"布局 Layout"| D["几何信息"]
D -->|"绘制 Paint"| E["绘制指令"]
E -->|"合成"| F["屏幕像素"]
G["屏幕"]
F --> G
浏览器通过内核来渲染网站,就像显示器通过屏幕来呈现画面:屏幕能将视频文件中的数据以画面呈现出来,但不同品牌的显示器在色彩、亮度等细节上存在差异,不同内核之间的渲染结果也会有细微差别。
浏览器 ≠ 内核。如果没有内核,浏览器只是一个空壳。举个例子:Chrome 浏览器的外壳由 Google 开发,内核使用 Blink;早期版本的 Edge 使用自家外壳搭配 EdgeHTML 内核(源自 IE11),2019 年起彻底转向 Chromium 内核。
1.2 主流浏览器内核进化史
Section titled “1.2 主流浏览器内核进化史”内核的发展是一部群雄逐鹿 → 三国鼎立 → 一家独大又裂变的历史。
timeline
title 浏览器内核演进
1995 年 : IE 3.0 推出 Trident 内核 : IE 开始长期占据主流
2001 年 : 苹果基于 KHTML 分支开发 WebKit : Safari 上线
2003 年 : Mozilla 从 Netscape 演化出 Firefox : Gecko 内核成熟
2008 年 : Chrome 基于 WebKit 上线 : 引入 V8 引擎
2013 年 : Google 从 WebKit 分支出 Blink : Chrome 开始用 Blink
2016 年 : Opera 转向 Chromium : Blink 生态扩大
2019 年 : Edge 转向 Chromium : 旧 EdgeHTML 内核退役
2024 年 : Blink 系浏览器市场份额超过 70%
展开阅读:三阶段历史详解
① 上古时代:百家争鸣
- Trident(IE 内核):微软开发,IE 浏览器称霸 90 年代末至 21 世纪初,导致大量老旧网站只支持 Trident。
- Gecko:网景公司遗产的延续,Firefox 浏览器使用,特点是高度标准化和扩展性强。
- KHTML:KDE 开源项目,Linux 环境下 Konqueror 浏览器使用。
② WebKit 时代:苹果改写规则
2001 年,苹果从 KHTML 中分支开发了 WebKit,用于 Safari 浏览器。它轻量、高效、符合标准。
2008 年,Google 基于 WebKit 开发并推出了 Chrome 浏览器,搭配了革命性的 JS 引擎 V8(JIT 编译速度快、性能极强)。
③ Blink 的诞生:Google 自立门户
2013 年,Google 为了获得更灵活的迭代能力(不受 WebKit 社区开发节奏的约束),从 WebKit 分支出 Blink。
今天,Blink 是统治级的渲染引擎,用于 Chrome、Edge(新版)、Opera、Brave、Vivaldi 等一众浏览器。
1.3 主流浏览器内核(2026)
Section titled “1.3 主流浏览器内核(2026)”| 浏览器 | 内核 | JS 引擎 | 备注 |
|---|---|---|---|
| Google Chrome | Blink | V8 | 全球市场份额最高,内核迭代最快 |
| Microsoft Edge | Blink | V8 | 新版已全面转向 Chromium,放弃自研 EdgeHTML |
| Opera | Blink | V8 | 同为 Chromium 生态成员 |
| Brave | Blink | V8 | 隐私保护浏览器,同样基于 Chromium |
| Vivaldi | Blink | V8 | 高度可定制化的 Chromium 系浏览器 |
| Apple Safari | WebKit | JavaScriptCore | 苹果全系设备预装,iOS 平台唯一内核 |
| Mozilla Firefox | Gecko | SpiderMonkey | 主流浏览器中唯一坚持完全自研内核 |
注:曾经广泛使用的 Trident(IE 内核)和 Presto(旧 Opera)已基本退出历史舞台。
2 基于 Chromium 的浏览器
Section titled “2 基于 Chromium 的浏览器”2.1 产品介绍
Section titled “2.1 产品介绍”2.1.1 Google Chrome
Section titled “2.1.1 Google Chrome”Chrome 是全球市场份额最高的浏览器,2026 年全球桌面端占有率约 73.39%,在亚洲市场更高达 78.29%。
特点:
- 稳定,稳定,稳定。
- 超 20 万扩展插件生态。
- 绑定 Google 账号,登录后可跨设备同步书签、密码、扩展等数据。
- 完整的 DRM 支持,流媒体兼容性优秀。
- 新标签页无广告干扰。
缺点:
- Google 的账号与广告体系会读取并分析用户的行为数据(国内无法直接使用 Google 服务,因此影响有限)。
- 后台服务(Google Update、Google Safe Browsing 等)持续消耗资源。
- 国内同步功能受网络环境影响,通常需要额外配置才能使用。
2.1.2 Microsoft Edge
Section titled “2.1.2 Microsoft Edge”2019 年起,Microsoft Edge 全面转向 Chromium 内核,并成为 Windows 10/11 系统的默认浏览器,全球桌面市场份额约 10.99%,在北美市场更高达 14.12%。
特点:
- 垂直标签页功能,便于高效管理大量标签(这个真没话说,Edge 垂直标签确实好用;近期 Chrome 试验版也加入了类似功能,但体验不如 Edge 顺手)。
- 分屏视图支持页面并排比较。
- 集锦(Collections)功能,可将图片、网页、笔记整理并导出至 Excel/OneNote。
- 内置 PDF 阅读器,支持注释和高亮。
- Copilot AI 助手,可总结网页内容、生成图像和邮件(体验尚未成熟,且国内网络环境下使用受限)。
- 与微软账号体系联动,登录微软账号后可开启跨设备同步(并不会自动同步,仍需显式开启)。
缺点:
- 应用相对臃肿,安装包和运行体积较大。
- 存在 Microsoft 遥测,隐私保护需手动调整。与 Chrome 类似,微软在国内的服务较为齐全,因此数据收集范围更值得留意。
- Windows 端偶有强制推广的浮窗或通知。
2.1.3 Brave
Section titled “2.1.3 Brave”Brave 将自己定位为默认拦截广告和追踪器的隐私导向型浏览器,全球市场份额约 1.36%,在北美为 3.25%。
特点:
- 内置广告拦截器和追踪器拦截,开箱即用(相较第三方扩展更容易避开网站的检测)。
- 指纹防护功能,减少追踪熵值(部分网站可能存在兼容性差异)。
- 支持 Tor 路由的隐私窗口,提供额外匿名性(使用场景有限,日常用不到)。
- 由于阻断了跟踪脚本,页面加载速度通常比 Chrome 更快。
- 内置 AI 助手 Lighthouse。
- 垂直标签页,同样好用。
缺点:
- 内置 Brave Rewards(BAT 加密货币)体系较为复杂,对普通用户意义不大。
- Brave Search(自有搜索引擎)在国内网络环境下无法使用。
- 某些地区将默认搜索引擎从 Google 替换为 Brave Search,被部分用户视为对浏览体验的侵入。
2.1.4 Opera
Section titled “2.1.4 Opera”Opera 以内置大量原本需要扩展才能实现的功能为特色,全球市场份额约 2.21%。站长本人没有使用过,以下简介部分引用自 AI 生成的介绍:
特点:
- 内置 VPN(在国内网络环境下无法使用)。
- 集成广告拦截器和加密货币挖矿脚本拦截。
- 侧边栏集成 WhatsApp、Telegram、Facebook Messenger 等即时通讯工具。
- 省电模式和画中画视频播放。
- Opera GX 版本:面向游戏玩家,提供 CPU/RAM 限制器、Twitch/Discord 集成。
缺点:
- 内置功能较多,资源占用高于精简版 Chromium。
- 所谓”免费 VPN”是速度有限的代理,不能替代专业 VPN 服务。
- 隐私保护记录不如 Brave 或 Ungoogled Chromium。
2.1.5 国产 Chromium 内核浏览器
Section titled “2.1.5 国产 Chromium 内核浏览器”本文不列举国内 Chromium 内核浏览器,读者可自行检索与评估。
2.1.6 Ungoogled Chromium
Section titled “2.1.6 Ungoogled Chromium”这是一个移除了所有 Google 服务、同步和遥测功能的 Chromium 分支。用起来就是一个去除 Google 相关的纯净版 Chrome。功能需求不高的用户可以考虑,但相比保留完整生态的其他 Chromium 浏览器,其在扩展支持和账号体系上确实有所缺失。整体而言较为纯净,运行性能良好。
2.2 启动参数
Section titled “2.2 启动参数”Chromium/Chrome 浏览器提供了数百个命令行启动参数,允许开发者、测试人员和高级用户精细控制浏览器行为。
2.2.1 启动参数使用方法
Section titled “2.2.1 启动参数使用方法”这里只讲 Windows 上的使用方法
方法一:修改快捷方式
- 右键点击 Chrome 快捷方式,选择”属性”。
- 切换到”快捷方式”标签页。
- 在”目标”文本框末尾添加参数,格式为:
--参数名=参数值(注意--前需保留一个空格)。 - 点击”确定”保存。
例如:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --incognito --window-size=1920,1080路径本身包含空格时,
.exe路径必须用双引号括起来。
方法二:命令行启动
按 Win + R 打开运行对话框,输入带参数的命令,例如:
chrome.exe --user-data-dir="D:\ChromeProfile" --no-first-run多个参数可以同时使用,按顺序排列即可。
2.2.2 常用启动参数
Section titled “2.2.2 常用启动参数”1 基础运行参数
Section titled “1 基础运行参数”| 参数 | 说明 | 示例/备注 |
|---|---|---|
--user-data-dir=DIR | 指定用户数据目录(profile 存放位置) | 分离不同用户配置,支持多实例并行运行 |
--incognito | 直接以隐身/无痕模式启动 | 不保存历史记录、缓存和 Cookie |
--new-window | 在新窗口中打开指定 URL | --new-window https://example.com |
--app=URL | 以应用程序模式启动(极简 UI) | 隐藏地址栏和工具栏,类似 PWA 体验 |
--start-maximized | 浏览器启动时最大化窗口 | 适用于全屏工作场景 |
--kiosk | 启用 kiosk 全屏模式 | 隐藏所有 UI 元素,常用于信息亭、展示屏 |
--temp-profile | 使用临时配置文件 | 会话结束后自动清理,不同于隐身模式 |
2 性能与渲染参数
| 参数 | 说明 | 使用场景 |
|---|---|---|
--disable-gpu | 禁用 GPU 硬件加速 | 解决显卡兼容性问题、减少资源占用 |
--disable-software-rasterizer | 禁用软件光栅化 | 强制使用 GPU 渲染,减少 CPU 负载 |
--enable-gpu-rasterization | 启用 GPU 光栅化 | 复杂 CSS/Canvas 页面性能优化 |
--disable-extensions | 禁用所有扩展 | 减少内存占用,提升启动速度 |
--disable-plugins | 禁用插件 | 降低资源消耗 |
--disable-javascript | 禁用 JavaScript 执行 | 页面仅保留静态 HTML/CSS 内容,会破坏大多数现代网站的交互功能 |
--disk-cache-size=SIZE | 设置磁盘缓存大小(字节) | 控制缓存占用空间 |
--disk-cache-dir=DIR | 指定缓存目录 | 将缓存移至内存盘或指定位置 |
3 窗口与界面参数
| 参数 | 说明 | 示例 |
|---|---|---|
--window-size=W,H | 设置窗口大小 | --window-size=1920,1080 |
--window-position=X,Y | 设置窗口位置 | --window-position=100,100 |
--hide-scrollbars | 隐藏滚动条 | 特殊页面布局需求 |
--disable-infobars | 禁用信息栏提示 | 减少自动化测试时的干扰 |
--no-startup-window | 启动时不创建窗口 | 仅运行后台进程,配合调试使用 |
4 网络与代理参数
| 参数 | 说明 | 示例 |
|---|---|---|
--proxy-server=HOST:PORT | 指定代理服务器 | --proxy-server="socks5://127.0.0.1:1080" |
--no-proxy-server | 禁用代理服务器 | 强制忽略系统代理设置 |
--proxy-auto-detect | 自动检测代理配置 | 使用 PAC 自动发现 |
--proxy-pac-url=URL | 指定 PAC 脚本地址 | --proxy-pac-url="http://example.com/proxy.pac" |
--host-resolver-rules | 自定义 DNS 映射 | --host-resolver-rules="MAP * 127.0.0.1" |
代理协议说明:支持 HTTP、SOCKS4、SOCKS5,默认使用 HTTP 协议。
# HTTP 代理--proxy-server="http://proxy.example:8080"# SOCKS5 代理--proxy-server="socks5://proxy.example:1080"# 按协议分类代理--proxy-server="https=proxy1.example:8080;http=proxy2.example:8080"# SOCKS5 代理(无协议头写法)--proxy-server="socks5:proxy.example:1080"5 调试与开发参数
| 参数 | 说明 | 典型用途 |
|---|---|---|
--remote-debugging-port=PORT | 开启远程调试端口 | DevTools 协议调试、Puppeteer 控制 |
--remote-debugging-pipe | 使用管道调试 | 更安全的调试通信方式 |
--disable-web-security | 禁用同源策略 | 危险:仅用于本地开发测试 |
--allow-file-access-from-files | 允许 file 协议跨域 | 本地 HTML 文件调试 |
--allow-insecure-localhost | 允许 localhost 的 TLS 错误 | 忽略自签名证书警告 |
--enable-logging=stderr | 启用日志输出 | 诊断浏览器行为 |
--log-file=FILE | 指定日志文件 | --log-file="C:\chrome.log" |
--v=LEVEL | 设置日志详细级别 | 1-3,数字越大越详细 |
--vmodule=MODULE=N | 按模块设置日志级别 | --vmodule=*pp=3,net/*=2 |
--js-flags=FLAGS | 传递 V8 引擎参数 | --js-flags="--max-old-space-size=2048" |
6 无头模式参数
| 参数 | 说明 | 示例 |
|---|---|---|
--headless | 无头模式(不显示 UI) | 服务器端自动化运行 |
--headless=new | 新版无头模式 | 更完整的浏览器特性支持 |
--dump-dom | 输出 DOM 树 | 与 --headless 配合使用 |
--screenshot | 截图输出 | --screenshot=screenshot.png |
--print-to-pdf | 输出 PDF | --print-to-pdf=output.pdf |
无头模式示例:
# 截图chrome --headless=new --screenshot=page.png https://example.com# 生成 PDFchrome --headless=new --print-to-pdf=page.pdf https://example.com# 控制台输出 DOMchrome --headless=new --dump-dom https://example.com现代 Chrome 已推荐使用
--headless=new,旧版--headless会启用兼容模式的旧无头实现,行为不完全一致。
7 安全与隐私参数
| 参数 | 说明 | 风险提示 |
|---|---|---|
--no-sandbox | 禁用沙箱隔离 | ⚠️ 降低安全性,仅限可信环境 |
--disable-setuid-sandbox | Linux 下禁用 setuid 沙箱 | Docker 容器等受限环境使用 |
--disable-web-security | 禁用同源策略 | 🔴 高危,仅调试用 |
--no-referrers | 不发送 Referer 头 | 增强隐私,可能影响部分站点功能 |
--disable-reading-from-canvas | 禁用 Canvas 读取 | 防止 Canvas 指纹追踪 |
安全警告:
--no-sandbox和--disable-web-security会显著降低浏览器安全性,切勿在日常浏览或访问不可信网站时使用。
8 实验性参数
| 参数 | 说明 |
|---|---|
--enable-zero-copy | 启用零拷贝光栅化,减少内存拷贝延迟 |
--force-gpu-mem-available-mb=MB | 强制设定可用 GPU 内存大小 |
--disable-features=FEATURE | 禁用特定特性 |
--enable-features=FEATURE | 启用实验性特性 |
--single-process | 单进程模式(⚠️ 不稳定,仅测试用) |
9 获取完整参数列表
Chrome/Chromium 有数百个命令行参数,官方文档有限。可通过以下途径获取更多信息:
- 命令行帮助:
chrome.exe --help(仅显示部分基础参数)。 - 在线资源:访问 Peter Beverloo 的 Chromium 参数列表(500+ 条,每日更新)。
- 源码探索:Chrome 源码中的
content/content_browser/common/content_switches.cc文件。
2.3 实用技巧
Section titled “2.3 实用技巧”2.3.1 用户数据目录分离
Section titled “2.3.1 用户数据目录分离”由于浏览器可以通过启动参数来指定用户数据目录位置,因此在使用同一个浏览器程序的情况下,可以做到信息不交叉的多开。仅增加用户数据存放目录,而不会多复制一份浏览器程序本体,节省空间又好用。
核心参数就是:
--user-data-dir=路径浏览器多开有两种方案,选择取决于场景:
flowchart TB
A["同一份 chrome.exe"] --> B["方案一:--user-data-dir 分离"]
A --> C["方案二:--profile-directory 分离"]
B --> D["多个完全独立的数据目录"]
C --> E["同一数据目录内的多个 Profile"]
D --> F["完全隔离的浏览器环境<br/>独立 Cookie / 缓存 / 扩展"]
E --> G["共享数据目录内的多个账号<br/>存在数据相互影响的可能"]
展开:用户数据目录分离完整步骤
1. 确认 Chrome 安装位置
例如默认位置:
C:\Program Files\Google\Chrome\Application\chrome.exe
如果找不到安装位置,可以右键桌面上的 Chrome 图标,依次选择”属性 → 打开文件位置”。启动程序就是 chrome.exe,能看到这个程序就对。
2. 创建数据存放文件夹
在你想存放数据的地方创建一个或多个空文件夹(其实不创建通过参数直接填会自动创建,这里为了不出错和便于管理先创建)。
比如:
D:\ChromeData\001D:\ChromeData\002D:\ChromeData\0033. 创建快捷方式
方法一:右键之前的 chrome.exe,点击”新建快捷方式”,就能得到对应的快捷方式。这个快捷方式可以随便移动,此时右键快捷方式打开属性,目标处就会自动填写 chrome.exe 路径。


方法二:在某个文件夹里或桌面右击空白处,点击”新建 → 快捷方式”,在弹出的对话框填入完整的 chrome.exe 路径(这里可以直接添加参数,后面会提到):


名字随便,点击确定就好。
4. 添加参数
之后右键创建的快捷方式打开属性,在”目标”一栏后面添加参数,如:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --user-data-dir="D:\ChromeData\001"第二、第三个多开浏览器就重复步骤,也是新建快捷方式然后修改目标栏:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --user-data-dir="D:\ChromeData\002""C:\Program Files\Google\Chrome\Application\chrome.exe" --user-data-dir="D:\ChromeData\003"如果是手动创建快捷方式,可以直接在”想为哪个对象创建快捷方式?“对话框中输入带参数的完整指令,同上:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --user-data-dir="D:\ChromeData\001"
参数写法与前文一致:
.exe路径若包含空格需要用双引号括起来,--参数前保留一个空格。
5. 使用
创建好后双击快捷方式就能使用了。此时在保存用户数据的目录内会自动生成默认配置文件。
补充:--profile-directory 参数
--user-data-dir:指定一个完整的数据存储位置,相当于创建了一个全新的浏览器安装环境。--profile-directory:在同一个--user-data-dir内,指定使用哪个具体用户文件夹。
前者创建的是多个完全独立的数据仓库,后者是在同一个仓库内创建多个独立房间。
有时候想在同一个浏览器环境(同一套设置、插件、脚本等)内多开可以使用,相当于同一个软件多个账号登录。但 cookie 数据等可能会相互影响(未实测)。
使用方式同上,这里直接给完整示例:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --profile-directory="Profile 1"结合起来就是:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --user-data-dir="D:\ChromeData\001" --profile-directory="Profile 1""C:\Program Files\Google\Chrome\Application\chrome.exe" --user-data-dir="D:\ChromeData\001" --profile-directory="Profile 2"意思就是在同样使用”D:\ChromeData\001”数据目录的情况下,分别使用 Profile 1 和 Profile 2 用户登录(本地用户,不是 Google 账户)。
提示:同一个
user-data-dir内同时启动两个进程时,Chromium 会将第二个实例合并到已存在的窗口中,通常无法作为独立的多开实例运行。如需真正多开,请改用--user-data-dir分离数据目录。
2.3.2 浏览器指定代理
Section titled “2.3.2 浏览器指定代理”同样地,通过参数 --proxy-server 可以手动设置浏览器的代理地址,方法与上面类似。
代理请求的流程大致如下:
flowchart LR
A["本地浏览器<br/>--proxy-server 指定"] -->|"本地 SOCKS5 或 HTTP 转发"| B["代理客户端<br/>v2rayN / 系统代理"]
B --> C["代理服务器"]
C --> D["目标网站"]
D --> C
C --> B
B --> A
展开:完整配置示例与场景组合
比如 v2rayN 参数设置中本地混合监听端口默认为 10808 或 10809(这里假设为 10809)
则示例为:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --proxy-server="socks5://localhost:10809"其中 localhost 代指本机地址,也可以使用 127.0.0.1,即 socks5://127.0.0.1:10809。本地代理通常推荐使用 SOCKS5 协议,同样支持 HTTP 协议。
因此根据以上提到的各种参数,我们就能很好地实现场景和代理隔离,比如平时默认使用的浏览器快捷方式启动参数设置为:
"C:\Program Files\Google\Chrome\Application\chrome.exe"而需要走代理的设置为:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --user-data-dir="D:\ChromeData\001" --proxy-server="socks5://localhost:10809"需要走代理但需要两个场景的,根据需要添加 --profile-directory 参数或者 --user-data-dir 参数。
2.3.3 浏览器多开管理
Section titled “2.3.3 浏览器多开管理”根据上面的技巧,当我们需要分离的环境越来越多时,我们就需要一个方便的管理面板而不是一大堆快捷方式了。
为什么要这么多多开环境?(延伸阅读)
很多网站通过读取 cookie 和缓存来限制你登录多个账号,就算算上无痕模式也只能多开一个账号。另外很多网站账号都是相互关联的,可能一个网站账号被标记了某个标签,用同一个浏览器环境登录的其他网站的账号可能也会被打上同一个标签。另外,来回切换账号也是很麻烦,想在这个环境下使用同一套账号而在另一个环境使用另一套就可以设置多开。
通过参数还可以配合其他启动参数设置各种选项,以此可以实现浏览器指纹的更改,从而达到类似指纹浏览器的效果(虽然效果没那么好,但市面上所有好用的指纹浏览器都是要收费的)。
如果你没有太大的需求,这里推荐站长自己写的浏览器多开管理助手 Python 脚本,也是很好用,但需要电脑已安装 Python 环境。感兴趣的读者也可以自行让 AI 编写,逻辑并不复杂,而且兼容性更强,不管什么 Chromium 浏览器、什么路径都没问题。仓库链接: