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

如何自动化捕获并下载网页流式音频?兼询浏览器扩展自动化方案

自动化流式音频捕获的解决方案

一、自动化Chrome扩展(Smart Audio Capture)的方法

Selenium并非完全无法与扩展交互,只要正确加载扩展并定位其UI元素即可:

  1. 加载扩展到Selenium会话

    • 先获取Smart Audio Capture的本地路径或CRX文件:
      • 本地路径:在Chrome的扩展安装目录找到对应ID的文件夹(Windows:%LOCALAPPDATA%\Google\Chrome\User Data\Default\Extensions;Mac:~/Library/Application Support/Google/Chrome/Default/Extensions;Linux:~/.config/google-chrome/Default/Extensions),选择最新版本的目录。
    • 初始化ChromeDriver时添加扩展:
      from selenium import webdriver
      from selenium.webdriver.chrome.options import Options
      
      chrome_options = Options()
      # 加载本地扩展目录
      chrome_options.add_extension("/path/to/smart-audio-capture-version-folder")
      # 或加载CRX文件:chrome_options.add_extension("/path/to/extension.crx")
      
      driver = webdriver.Chrome(options=chrome_options)
      
  2. 操作扩展UI

    • 扩展的弹窗页面URL为 chrome-extension://<扩展ID>/popup.html,直接打开该URL后,用Selenium常规定位方法(XPATH、CSS选择器)点击开始/停止按钮:
      # 打开扩展弹窗
      driver.get("chrome-extension://abc123xyz/popup.html")
      # 点击开始捕获按钮(需根据扩展实际元素调整选择器)
      driver.find_element("css selector", "button.start-rec").click()
      # 等待录制时长
      import time
      time.sleep(30)
      # 停止捕获
      driver.find_element("css selector", "button.stop-rec").click()
      

二、无需扩展:用Chrome DevTools Protocol(CDP)直接捕获

这是更稳定的方案,跳过第三方扩展,直接调用浏览器原生能力:

from selenium import webdriver
import time
import base64

driver = webdriver.Chrome()
driver.get("你的目标音频页面URL")

# 启动音频录制,指定格式和码率
driver.execute_cdp_cmd("MediaRecorder.startRecording", {
    "mimeType": "audio/webm",
    "audioBitsPerSecond": 128000
})

# 等待音频播放完成或指定录制时长
time.sleep(30)

# 停止录制并获取base64编码的音频数据
recording_result = driver.execute_cdp_cmd("MediaRecorder.stopRecording", {})
audio_base64 = recording_result["data"]

# 解码并保存到文件
with open("captured_audio.webm", "wb") as f:
    f.write(base64.b64decode(audio_base64))

driver.quit()

三、替代Selenium的工具

1. Playwright

对扩展支持更友好,原生集成CDP,操作更简洁:

from playwright.sync_api import sync_playwright
import base64

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    # 加载扩展
    context = browser.new_context(
        extensions=["/path/to/smart-audio-capture-folder"]
    )
    page = context.new_page()
    page.goto("你的目标音频页面URL")

    # 打开扩展弹窗
    extension_id = "扩展的唯一ID"  # 从Chrome扩展管理页面获取
    page.goto(f"chrome-extension://{extension_id}/popup.html")
    # 启动录制
    page.click("button#start-button")  # 替换为实际元素选择器
    # 等待录制
    page.wait_for_timeout(30000)
    # 停止录制并处理下载
    page.click("button#stop-button")
    download = page.wait_for_download()
    download.save_as("captured_audio.webm")

    browser.close()

2. Puppeteer(Node.js)

Node.js生态下的浏览器自动化工具,同样支持扩展和CDP,适合前端栈开发者。

注意事项

  • 确保浏览器自动授予音频捕获权限,可通过Selenium/Playwright的权限配置提前设置。
  • 流式音频需等待页面加载完成、音频开始播放后再启动捕获。
  • CDP方案无需依赖第三方扩展,避免了扩展更新带来的兼容性问题。

内容的提问来源于stack exchange,提问作者22Fonzie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 20:02:37