Назад към всички

browser-auto-download

// Browser-automated file download with enhanced features. Auto-detects platform (Windows/macOS/Linux, 64/32-bit, ARM/Intel), handles multi-step navigation (homepage to platform-specific pages), captures auto-downloads triggered on page load, and falls back to button clicking when needed. Ideal for com

$ git log --oneline --stat
stars:1,933
forks:367
updated:March 4, 2026
SKILL.mdreadonly
SKILL.md Frontmatter
namebrowser-auto-download
version4.1.0
descriptionBrowser-automated file download with enhanced features. Auto-detects platform (Windows/macOS/Linux, 64/32-bit, ARM/Intel), handles multi-step navigation (homepage to platform-specific pages), captures auto-downloads triggered on page load, and falls back to button clicking when needed. Ideal for complex download flows where curl/wget fail due to client-side rendering, automatic downloads, or multi-page navigation. Features page scrolling for lazy content, extended wait times, and Golang support.

Browser Auto Download v4.1.0 (Enhanced)

Download files from dynamic webpages with intelligent detection and multi-step navigation.

Key Features

  • Auto-download capture: Detects downloads triggered automatically on page load
  • Multi-step navigation: Finds and navigates to platform-specific pages (PC/Desktop versions)
  • Platform auto-detection: Windows x64/ARM64, macOS Intel/Apple Silicon, Linux
  • Event listening: Captures all download events without requiring button clicks
  • Smart fallback: Tries multiple strategies (auto-download, navigation, clicking)

When to Use

Use this skill for:

  • Auto-download sites: Downloads start automatically when page loads
  • Multi-step flows: Homepage - click "PC version" - download page
  • Dynamic content: Download links generated via JavaScript
  • Interactive downloads: Requires clicking buttons or navigating UI

NOT for: Direct file URLs (use curl/wget instead)

Quick Start

Option 1: Automatic (Recommended)

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

The script will:

  1. Check for auto-downloads on page load
  2. Look for platform-specific page links (PC/Desktop version)
  3. Navigate if needed
  4. Try clicking download buttons as fallback

Option 2: Built-in Shortcuts

# WeChat DevTools
python skills/browser-auto-download/scripts/auto_download.py --wechat

# Meitu Xiuxiu
python skills/browser-auto-download/scripts/auto_download.py --meitu

Option 3: Python Module

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

result = auto_download(
    url="https://example.com/download",
    auto_select=True,   # Platform detection
    auto_navigate=True  # Multi-step navigation
)

if result:
    print(f"Downloaded: {result['path']}")

How It Works

Three-Stage Strategy

Stage 1: Auto-Download Detection

Page loads - Check for downloads - Success?
    Yes:                    No:
    Save file               Go to Stage 2

Stage 2: Multi-Step Navigation

Look for "PC/Desktop" link - Navigate - Check downloads - Success?
    Yes:                        No:
    Save file                  Go to Stage 3

Stage 3: Button Clicking

Try multiple selectors - Click - Wait for download - Save

Platform-Specific Page Detection

Automatically finds links like:

  • "meitu for PC" - pc.meitu.com
  • "Desktop version" - desktop.example.com
  • "Windows Download" - windows.example.com

Keywords: pc, desktop, windows, mac, download, 电脑, 桌面, 客户端

Examples

Auto-Download Sites (Best Case)

# Sites that trigger download on page load
python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://pc.meitu.com/en/pc?download=pc"

Multi-Step Navigation

# Homepage - PC version - Download
python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://xiuxiu.meitu.com/" \
  --auto-navigate  # Enable (default: True)

Manual Selector (Fallback)

# If auto-detection fails
python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://example.com/download" \
  --selector "button:has-text('Download for free')"

Disable Features

# Don't navigate to platform pages
python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://example.com" \
  --no-auto-navigate

# Don't detect platform
python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://example.com" \
  --no-auto-select

Platform Detection

SystemArchitectureKeywords Used
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

Troubleshooting

Download not starting:

  • Use --headless (default: False) to observe the process
  • Check stderr for auto-download messages
  • Try --no-auto-navigate if navigation is causing issues
  • Use --selector to manually specify button

Wrong version downloaded:

  • Check platform detection in stderr output
  • Use --no-auto-select and manually specify --selector
  • Verify the site offers multiple versions

Navigation going to wrong page:

  • Disable with --no-auto-navigate
  • The site may not have platform-specific pages

File not saved:

  • Check write permissions in output directory
  • Ensure sufficient disk space
  • Wait for large files (up to 3 minutes)

Output Format

stderr (Progress)

Starting browser (visible)...
Opening: https://example.com
Checking for auto-downloads...
Checking for platform-specific page link...
Found platform page: https://pc.example.com
Navigating to platform page...
Download detected: software_v2.1.0_win64.exe
Saving: software_v2.1.0_win64.exe

SUCCESS!
File: C:\Users\User\Downloads\software_v2.1.0_win64.exe
Size: 231.9 MB

stdout (JSON result)

{
  "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"
}

Real-World Examples

Meitu Xiuxiu (Multi-step + Auto-download)

from auto_download import quick_download_meitu

result = quick_download_meitu()
# Flow: Homepage - PC page link - Navigate - Auto-download

WeChat DevTools (Button click)

from auto_download import quick_download_wechat_devtools

result = quick_download_wechat_devtools()
# Flow: Homepage - Click "Stable Windows 64" - Download

Generic Software (Mixed)

result = auto_download(
    url="https://example.com/downloads",
    auto_select=True,    # Detect Windows 64-bit
    auto_navigate=True   # Find "Desktop version" link
)

Requirements

pip install playwright
playwright install chromium

Advanced Usage

Custom Platform Keywords

Modify get_system_preference() in the script to add custom keywords.

Integration with Scripts

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"Downloaded: {data['path']}")  # Use the file

Batch Downloads

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"Success: {result['filename']}")