browser-auto-download

智能识别网页自动下载,支持多步骤导航与平台检测。

已扫描
适合谁
自动化脚本开发者、批量下载需求用户
不适合谁
仅需直接下载 URL 的用户、无网络环境或受限设备用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @aaronxx/browser-auto-download

Skill 说明

命令、参数、文件名以原文为准

浏览器自动下载 v4.1.0(增强版)

从动态网页中自动下载文件,支持智能检测与多步骤导航

主要功能

  • 自动下载捕获:在页面加载时检测自动触发的下载行为
  • 多步骤导航:自动查找并跳转至平台专用页面(如 PC/桌面版)
  • 平台自动识别:支持 Windows x64/ARM64、macOS Intel/Apple Silicon、Linux 系统
  • 事件监听:捕获所有下载事件,无需点击按钮
  • 智能回退机制:尝试多种策略(自动下载、导航跳转、点击按钮)

适用场景

适用于以下情况:

  • 自动下载网站:页面加载后立即开始下载
  • 多步骤流程:首页 → 点击“PC 版本” → 进入下载页
  • 动态内容生成:通过 JavaScript 动态生成的下载链接
  • 交互式下载:需要点击按钮或操作界面才能触发下载

不适用场景:直接的文件 URL(建议使用 curlwget

快速上手

方式一:自动模式(推荐)

python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://example.com/download"

该脚本将执行以下步骤:

  1. 检查页面加载时是否触发自动下载
  2. 查找平台专用页面链接(如 PC 版本)
  3. 如需跳转则自动导航
  4. 若失败,尝试点击下载按钮作为备用方案

方式二:内置快捷命令

# 微信开发者工具
python skills/browser-auto-download/scripts/auto_download.py --wechat

# 美图秀秀
python skills/browser-auto-download/scripts/auto_download.py --meitu

方式三:Python 模块调用

from skills.browser-auto-download.scripts.auto_download import auto_download

result = auto_download(
    url="https://example.com/download",
    auto_select=True,   # 自动识别平台
    auto_navigate=True  # 启用多步骤导航
)

if result:
    print(f"已下载:{result['path']}")

工作原理

三阶段策略

第一阶段:自动下载检测

页面加载 - 检查是否有下载 - 是否成功?
    是:                    否:
    保存文件               进入第二阶段

第二阶段:多步骤导航

查找“PC/桌面版”链接 - 跳转 - 检查下载 - 是否成功?
    是:                        否:
    保存文件                  进入第三阶段

第三阶段:按钮点击

尝试多个选择器 - 点击 - 等待下载完成 - 保存文件

平台专用页面识别

自动识别以下类型的链接:

  • “美图 PC 版” → pc.meitu.com
  • “桌面版本” → desktop.example.com
  • “Windows 下载” → windows.example.com

关键词包括:pcdesktopwindowsmacdownload电脑桌面客户端

使用示例

自动下载网站(理想情况)

# 页面加载即触发下载
python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://pc.meitu.com/en/pc?download=pc"

多步骤导航

# 首页 → PC 版 → 下载页
python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://xiuxiu.meitu.com/" \
  --auto-navigate  # 启用(默认值为 True)

手动指定选择器(备用方案)

# 当自动检测失败时使用
python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://example.com/download" \
  --selector "button:has-text('免费下载')"

禁用特定功能

# 不自动跳转到平台页面
python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://example.com" \
  --no-auto-navigate

# 不自动识别平台
python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://example.com" \
  --no-auto-select

平台识别规则

系统架构使用关键词
WindowsAMD64/x86_64windows, win64, x64, 64-bit, pc
Windowsx86/i686windows, win32, x86, 32-bit, pc
macOSARM64(M1/M2/M3)macos, arm64, apple silicon
macOSx86_64(Intel)macos, x64, intel
Linuxx86_64linux, x64, amd64

故障排查

下载未启动

  • 使用 --headless(默认为 False)以观察执行过程
  • 检查 stderr 输出中的自动下载提示信息
  • 若导航导致问题,可尝试 --no-auto-navigate
  • 使用 --selector 手动指定下载按钮

下载了错误版本

  • 检查 stderr 中的平台识别结果
  • 使用 --no-auto-select 并手动指定 --selector
  • 确认网站是否提供多个版本

导航跳转到错误页面

  • 使用 --no-auto-navigate 禁用自动跳转
  • 可能该网站没有提供平台专用页面

文件未保存

  • 检查输出目录写入权限
  • 确保磁盘空间充足
  • 大文件可能需要等待(最长可达 3 分钟)

输出格式

stderr(运行进度)

启动浏览器(可见模式)...
打开页面:https://example.com
检查自动下载...
查找平台专用页面链接...
发现平台页面:https://pc.example.com
正在跳转至平台页面...
检测到下载:software_v2.1.0_win64.exe
正在保存:software_v2.1.0_win64.exe

成功!
文件路径:C:\Users\User\Downloads\software_v2.1.0_win64.exe
大小:231.9 MB

stdout(JSON 结果)

{
  "path": "C:\\Users\\User\\Downloads\\software_v2.1.0_win64.exe",
  "filename": "software_v2.1.0_win64.exe",
  "size_bytes": 243209941,
  "size_mb": 231.9,
  "platform": "Windows AMD64"
}

实际应用案例

美图秀秀(多步骤 + 自动下载)

from auto_download import quick_download_meitu

result = quick_download_meitu()
# 流程:首页 → PC 版链接 → 跳转 → 自动下载

微信开发者工具(按钮点击)

from auto_download import quick_download_wechat_devtools

result = quick_download_wechat_devtools()
# 流程:首页 → 点击“稳定版 Windows 64” → 下载

通用软件下载(混合策略)

result = auto_download(
    url="https://example.com/downloads",
    auto_select=True,    # 自动识别 Windows 64 位
    auto_navigate=True   # 查找“桌面版”链接
)

依赖要求

pip install playwright
playwright install chromium

高级用法

自定义平台关键词

修改脚本中的 get_system_preference() 函数,添加自定义关键词。

与脚本集成

import subprocess
import json

result = subprocess.run([
    'python', 'skills/browser-auto-download/scripts/auto_download.py',
    '--url', 'https://example.com/download'
], capture_output=True, text=True)

if result.returncode == 0:
    data = json.loads(result.stdout)
    print(f"下载完成: {data['path']}")  # 使用下载的文件

批量下载

urls = [
    "https://example1.com/download",
    "https://example2.com/download",
    "https://example3.com/download"
]

for url in urls:
    result = auto_download(url)
    if result:
        print(f"成功: {result['filename']}")
A
@aaronxx

已收录 1 个 Skill

相关推荐