如何在 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=<非默认目录>;端口被占时换新端口。

引用
相关推荐
肖永威11 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos
TechWJ11 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
枷锁—sha11 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
可夫小子12 小时前
基于Notion自媒体内容生产发布系统-2026
ai编程
abluckyboy12 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法
喵手12 小时前
Python爬虫实战:构建各地统计局数据发布板块的自动化索引爬虫(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集数据csv导出·采集各地统计局数据发布数据·统计局数据采集
冬奇Lab12 小时前
AI时代的"工具自由":我是如何进入细糠时代的
人工智能·ai编程
天天爱吃肉821813 小时前
跟着创意天才周杰伦学新能源汽车研发测试!3年从工程师到领域专家的成长秘籍!
数据库·python·算法·分类·汽车
m0_7155753413 小时前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python
甄心爱学习13 小时前
【leetcode】判断平衡二叉树
python·算法·leetcode