SOLUTION.md 1.8 KB

浏览器工具问题解决方案

问题描述

browser-use 启动时报错:

JSONDecodeError: Expecting value: line 1 column 1 (char 0)
CDP connected but failed to re-create CDP session

根本原因

环境变量中的代理设置导致 httpx 库无法访问 localhost 的 CDP 端点。

即使关闭了 VPN,系统环境变量中可能仍然保留了代理配置,导致:

  • httpx 尝试通过代理访问 http://localhost:9222
  • 代理无法处理 localhost 请求
  • 请求超时或返回空响应
  • 导致 JSONDecodeError

解决方案

方案1:设置 NO_PROXY 环境变量(推荐)

在你的 Python 脚本开头添加:

import os

# 禁止对所有地址使用代理
os.environ['NO_PROXY'] = '*'
os.environ['no_proxy'] = '*'

方案2:在 run.py 中启用

examples/find knowledge/run.py 第15行,取消注释:

# 原来(第15行):
# os.environ.setdefault("no_proxy", "*")

# 改为:
os.environ.setdefault("no_proxy", "*")

方案3:永久设置(可选)

~/.zshrc~/.bash_profile 中添加:

export NO_PROXY="*"
export no_proxy="*"

然后重启终端。

验证

运行测试脚本验证修复:

cd examples/test_browser
python3 test_browser_fixed.py

应该看到:

✅ 浏览器会话启动成功
✅ 导航成功

为什么同事可以运行

可能的原因:

  1. 同事没有安装 VPN 或代理软件
  2. 同事的环境变量中没有代理配置
  3. 同事的代码已经包含了 NO_PROXY 设置

技术细节

  • httpx 默认会读取环境变量 HTTP_PROXY, HTTPS_PROXY, NO_PROXY
  • 当设置了代理但没有设置 NO_PROXY 时,localhost 请求也会被代理
  • 大多数代理不支持 localhost,导致请求失败
  • 设置 NO_PROXY=* 告诉 httpx 不要对任何地址使用代理