如何使用Selenium与已打开的Brave浏览器交互?原方案失效求解决
解决Brave浏览器更新后远程调试端口无法访问的问题
问题根源
新版Brave(基于Chromium 114+内核)对远程调试机制新增安全限制,强制要求使用独立的用户数据目录启动;同时原代码中socket.gethostbyname("localhost:9222")的写法存在错误,导致Selenium无法正确建立连接。
可行解决步骤
1. 修改Brave启动命令
添加--user-data-dir参数指定专属调试目录,避免与默认用户目录冲突:
"C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe" --remote-debugging-port=9222 --user-data-dir="C:\Temp\BraveDebugProfile"
注:
C:\Temp\BraveDebugProfile可替换为任意空目录或专门的调试目录,首次启动会自动生成配置文件。
2. 验证远程调试端口可用性
启动Brave后,在浏览器中访问 http://127.0.0.1:9222/json,若返回包含webSocketDebuggerUrl字段的JSON数组,说明远程调试服务正常运行。
3. 修正Selenium连接代码
移除错误的socket.gethostbyname调用,直接指定debuggerAddress为localhost:9222:
from selenium import webdriver from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager options = Options() options.binary_location = r"C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe" options.add_argument("disable-popup-blocking") # 直接指定调试地址,格式为主机:端口 options.add_experimental_option("debuggerAddress", "localhost:9222") # 自动匹配兼容版本的ChromeDriver driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)
额外注意事项
- 确保ChromeDriver版本与Brave内核版本一致:可在Brave的
about:version页面查看内核版本,若ChromeDriverManager自动安装的版本不兼容,可手动下载对应版本的ChromeDriver并指定路径。 - 检查防火墙设置:确保本地9222端口未被系统防火墙拦截(本地访问概率极低,但可作为排查项)。
内容的提问来源于stack exchange,提问作者Dr.PB
相关产品推荐
相关产品推荐

