如何在 Chrome 136+ 用 browser-use 打开「带登录态」的浏览器

在 Chrome 136+ 用 browser-use 打开「带登录态」浏览器的完整攻略

适用场景:Python + Playwright ⬄ browser-use ≥ 0.1.42
目标:无需重复登录,稳定复用本机 Chrome Profile

一、背景

版本 说明
Chrome ≤135 允许默认 Profile 开启调试端口 无特殊限制
Chrome ≥136 强制要求 **--user-data-dir** 若进程携带 --remote-debugging-port/pipe,必须 同时提供 非默认 --user-data-dir。默认 Profile 会屏蔽调试端口 默认 Profile 禁用调试端口
**browser-use≤0.1.40** 连接默认 Profile 时触发 **ECONNREFUSED** 无法适配新安全策略 错误:ECONNREFUSED ::1:9222
**browser-use≥0.1.42** 自动创建临时 Profile(**/tmp/browseruse-*** 登录态丢失但可正常连接

1. Chrome 136 升级日志文档

  • Custom data directory required for remote debugging

Remote debugging via a TCP port or a pipe is no longer possible in Google Chrome with the default data directory on Windows, Linux, and macOS. A custom data directory must be specified to remotely debug Google Chrome using the --user-data-dir switch, when using the --remote-debugging-pipe or --remote-debugging-port switches.

We've made this change because these remote debugging switches are being abused by infostealers and malware to extract data from Google Chrome. A custom user data directory uses a different encryption key and so it prevents malware stealing encrypted data such as cookies.

This change does not affect Chrome for Testing and Chromium.

  • Chrome 136 on Linux, macOS, Windows

2. Python 代码报错文案

ERROR browser ❌ Failed to start a new Chrome instance: BrowserType.connect_over_cdp: connect ECONNREFUSED ::1:9222

Call log:

retrieving websocket url from http://localhost:9222

ERROR browser Failed to initialize Playwright browser: To start chrome in Debug mode, you need to close all existing Chrome instances and try again otherwise we can not connect to the instance.

ERROR browser ❌ Failed to create new browser session: To start chrome in Debug mode, you need to close all existing Chrome instances and try again otherwise we can not connect to the instance. (did the browser process quit?)

WARNING browser ⚠️ Page load failed, continuing...

二、核心思路

  1. 使用 shell 脚本复制一份现有 Profile(包含 cookie 等)到专用目录
  2. Python 代码里显式设置 --user-data-dir=<专用目录>
  3. 可选:多实例/并行→每份 Profile 用独立端口

三、Shell 脚本

1. Shell 脚本

bash 复制代码
#!/usr/bin/env bash
set -e


PROFILE_DIR="${HOME}/.chrome-profiles/agent"      # 可以改成自己需要放在的位置
CHROME_DEFAULT="${HOME}/Library/Application Support/Google/Chrome/Default"


echo "▶ 准备持久化 profile:$PROFILE_DIR"
if [ -d "$PROFILE_DIR" ]; then
  echo "  目录已存在,跳过复制(如果要重新复制,请先删掉)"
else
  mkdir -p "$PROFILE_DIR"
  echo "  复制现有登录态...(可能稍慢,取决于文件大小)"
  cp -R "$CHROME_DEFAULT" "$PROFILE_DIR/Default"
  echo "  ✔ 完成"
fi

echo "ℹ️  以后在 Python 里把 --user-data-dir 指向:$PROFILE_DIR"

2. 执行

plain 复制代码
chmod +x prepare_chrome_profile.sh
./prepare_chrome_profile.sh

四、Python 示例(browser-use ≥ 0.1.42)

python 复制代码
from browser_use import Browser, BrowserConfig, Agent
from langchain_openai import ChatOpenAI
from pydantic import SecretStr
import os, asyncio

llm = ChatOpenAI(
    base_url="https://api.deepseek.com/v1",
    model="deepseek-chat",
    api_key=SecretStr("sk-...")
)

PROFILE_DIR = os.path.expanduser("~/chrome-profiles/agent")

browser = Browser(
    config=BrowserConfig(
        browser_binary_path="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
        extra_browser_args=[
            f"--user-data-dir={PROFILE_DIR}",
            "--profile-directory=Default",
        ],
        chrome_remote_debugging_port=9223,
        headless=False,
        keep_alive=True
    )
)

async def main():
    agent = Agent(
        task="示例任务 ...",
        llm=llm,
        browser=browser,
        use_vision=False
    )
    print((await agent.run()).final_result())

asyncio.run(main())

五、兼容旧版三策略

  1. 升级 browser-use 并加载持久 Profile(推荐,上文示例)
  2. 继续 0.1.40 + 手动启动 Chrome
plain 复制代码
google-chrome --remote-debugging-port=9222 --user-data-dir=/path/to/profile
  1. 然后 BrowserConfig(cdp_url="http://localhost:9222\")
  2. 降级 Chrome ≤ 135(应急,不建议长期)

六、常见疑问 & 排错

1. 必须每次跑 .sh 吗?

复制 Profile 只做一次;重置登录态时再执行。

2. 提示 profile locked / Chrome 已在运行?

关闭所有手动 Chrome,再启脚本。

3. 多 Agent 并发?

为每个实例复制独立 Profile,并用不同 chrome_remote_debugging_port。

4. chrome_instance_path 提示弃用?

升级后统一用 browser_binary_path。

5. 还是报 ECONNREFUSED 9222?

确认已传入 --user-data-dir=<非默认目录>;端口被占时换新端口。

引用
相关推荐
童园管理札记4 小时前
从政策驱动到课堂落地:2026年“人工智能+教育”全景解读与技术实践指南
人工智能·python·深度学习·职场和发展·学习方法
陈年老古董4 小时前
微博情感分析项目学习笔记
笔记·python·学习·机器学习·项目
10mAh4 小时前
【Python】从零开始做一个重复文件查找工具——找出改名副本,生成核对报告
python
用户0332126663674 小时前
使用 Python 轻松合并多个 PowerPoint 文件【代码详解】
python
挖掘狂人4 小时前
用 AI 写代码别只甩一句指令,这套工作流救过我的项目
程序员·ai编程·codebuddy
极客互动API4 小时前
极客互动-企业微信基于外部API接口实现AI客服自动接管外部联系人消息收发
java·微信·企业微信·ai编程·rpa
Xiu Yan4 小时前
Python 数据分析:Pandas DataFrame 零基础入门教程
python·jupyter·pycharm·numpy·pandas
别动我齐刘海4 小时前
ROS2 Jazzy + C++ 实战路线——ros2_control
c++·人工智能·python·opencv·机器学习·机器人·github
秋天的一阵风5 小时前
⚡上线 24 小时,13% 的付费团队连夜换到 Jev:它到底什么来头?
前端·人工智能·ai编程
youcans_5 小时前
【嵌入式软件AI编程】16. Claude Code 与 VS Code 的协同开发
stm32·mcu·嵌入式·ai编程·claude code