You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CDP的createBrowserContext目标中加载并启用扩展?

解决CDP隔离上下文加载扩展的问题

核心结论

通过Target.createBrowserContext创建的进程内隔离上下文,无法直接继承主上下文的扩展配置,但可以通过以下两种方式实现扩展加载:

方式一:启动Chrome时预配置扩展(单进程多上下文共享扩展)

如果所有隔离上下文都需要加载同一批扩展,可以在启动Chrome进程时直接指定扩展加载参数,同时强制允许扩展在隔离/隐身上下文运行:

  1. 启动Chrome时添加以下命令行参数:

    chrome --remote-debugging-port=9222 \
           --load-extension=/path/to/your/extension1,/path/to/your/extension2 \
           --incognito-extension-id=EXT_ID1,EXT_ID2
    
    • --load-extension:指定要加载的扩展本地路径(多个用逗号分隔)
    • --incognito-extension-id:指定允许在隔离/隐身上下文运行的扩展ID(对应上面加载的扩展,多个用逗号分隔);如果要全局允许所有扩展在隐身模式运行,可替换为--allow-extension-running-in-incognito
  2. 启动后通过CDP调用Target.createBrowserContext创建新上下文,此时该上下文会自动加载启动时指定的扩展,且具备运行权限。

注意:这种方式下所有新创建的隔离上下文都会共享同一批扩展,无法实现不同上下文加载不同扩展的需求。

方式二:启动独立Chrome进程(多进程实现扩展隔离)

如果需要不同隔离上下文加载不同扩展,或者要完全隔离扩展环境,必须启动独立的Chrome进程,每个进程使用不同的用户数据目录和扩展配置:

  1. 启动第一个Chrome进程,指定端口、用户数据目录和扩展:
    chrome --remote-debugging-port=9222 \
           --user-data-dir=/tmp/chrome-profile-1 \
           --load-extension=/path/to/ext1
    
  2. 启动第二个Chrome进程,使用不同端口和用户数据目录:
    chrome --remote-debugging-port=9223 \
           --user-data-dir=/tmp/chrome-profile-2 \
           --load-extension=/path/to/ext2
    
  3. 通过CDP分别连接到不同端口,每个进程内的BrowserContext(包括主上下文和新创建的隔离上下文)都会加载对应进程启动时指定的扩展。

关键原因说明

CDP的BrowserContext是Chrome进程内的轻量隔离单元,设计目标是隔离Cookie、本地存储等用户数据,但共享进程级的扩展加载配置。主上下文的扩展权限(如“允许在隐身模式运行”)属于进程级配置,不会自动继承给新创建的隔离上下文,必须在进程启动时显式配置扩展的隐身运行权限,才能让扩展在隔离上下文中生效。

内容的提问来源于stack exchange,提问作者Oskar Wickström

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 23:25:14