You need to enable JavaScript to run this app. 如何通过Selenium Python保存页面正在播放的验证码音频文件
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Selenium Python保存页面正在播放的验证码音频文件

下载配置失效的核心原因
  • 你之前通过add_argument传入download.default_directory的写法完全无效:这个参数属于Chrome的内部用户偏好,不是可识别的启动命令行参数,Chrome加载时会直接忽略,这就是配置不生效的根本原因。
零复杂请求的音频保存实现方案
  • 修正Chrome下载偏好配置
    替换你之前错误的路径配置代码,改用实验性偏好项的方式传入下载规则,确保所有触发的浏览器自动下载都会存到指定目录:
    chrome_options.add_argument("--mute-audio")
    # 替换原错误的download.default_directory配置
    chrome_options.add_experimental_option("prefs", {
        "download.default_directory": "/home/valentino/",
        "download.prompt_for_download": False,
        "download.directory_upgrade": True,
        "safebrowsing.enabled": True
    })
    driver = webdriver.Chrome(options=chrome_options)
    
  • 捕获正在播放的验证码音频源
    你当前流程里点击audio_play按钮后,页面会自动加载音频资源到<audio>标签中,不需要额外发独立请求,直接从元素属性拿到当前播放的音频地址即可:
    # 接在你原有代码的点击audio_play之后
    # 等待音频元素加载完成,获取正在播放的音频源地址
    audio = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.TAG_NAME, "audio"))
    )
    audio_url = audio.get_attribute("src")
    
  • 在页面上下文触发自动下载
    直接在当前页面执行JS,利用页面已有的鉴权上下文拉取音频资源,触发浏览器自带的下载流程,全程不涉及独立的requests请求操作,不会出现跨域、鉴权不匹配的问题:
    driver.execute_script(f"""
        fetch('{audio_url}')
        .then(res => res.blob())
        .then(blob => {{
            const blobUrl = URL.createObjectURL(blob);
            const downloadLink = document.createElement('a');
            downloadLink.href = blobUrl;
            downloadLink.download = 'captcha_audio.wav';
            document.body.appendChild(downloadLink);
            downloadLink.click();
            URL.revokeObjectURL(blobUrl);
        }})
    """)
    
  • 效果说明:因为已经配置了自动下载规则,触发下载后音频文件会直接存到你指定的/home/valentino/路径下,全程不需要处理弹窗、不需要构造请求头、不需要手动处理音频二进制流,保存完成后直接读取本地文件传给IBM Watson做语音解析即可。

注意:保留--mute-audio参数不会影响音频资源的正常捕获和下载,只是让本地不会放出验证码的播放声音,避免环境噪音干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 21:15:04