如何自动化捕获并下载网页流式音频?兼询浏览器扩展自动化方案
自动化流式音频捕获的解决方案
一、自动化Chrome扩展(Smart Audio Capture)的方法
Selenium并非完全无法与扩展交互,只要正确加载扩展并定位其UI元素即可:
加载扩展到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),选择最新版本的目录。
- 本地路径:在Chrome的扩展安装目录找到对应ID的文件夹(Windows:
- 初始化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)
- 先获取Smart Audio Capture的本地路径或CRX文件:
操作扩展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()
- 扩展的弹窗页面URL为
二、无需扩展:用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
相关产品推荐
相关产品推荐

