← Back to Browser & Automation
Browser & Automation by @ricardodantas

podman-browser

Headless browser automation using Podman + Playwright

0
Source Code

Podman Browser Skill

Headless browser automation using Podman + Playwright for scraping JavaScript-rendered pages.

Requirements

  • Podman 5.x+ installed and running
  • Node.js 18+ (for running the CLI)
  • Internet connection (first run pulls ~1.5GB container image)

Installation

Create a symlink for easy access:

chmod +x browse.js
ln -sf "$(pwd)/browse.js" ~/.local/bin/podman-browse

First run will pull the Playwright container image (~1.5GB).

Commands

podman-browse (or ./browse.js)

Fetch a JavaScript-rendered page and return its text content.

podman-browse "https://example.com"

Options:

  • --html - Return raw HTML instead of text
  • --wait <ms> - Wait for additional time after load (default: 2000ms)
  • --selector <css> - Wait for specific element before capturing
  • -h, --help - Show help

Examples:

# Get rendered text content from Hacker News
podman-browse "https://news.ycombinator.com"

# Get raw HTML
podman-browse --html "https://news.ycombinator.com"

# Wait for specific element
podman-browse --selector ".itemlist" "https://news.ycombinator.com"

# Extra wait time for slow pages
podman-browse --wait 5000 "https://news.ycombinator.com/newest"

How It Works

  1. Runs Microsoft's official Playwright container via Podman
  2. Uses Chromium in headless mode
  3. Waits for JavaScript to render (networkidle + custom wait)
  4. Returns text or HTML content

Container Image

Uses mcr.microsoft.com/playwright:v1.50.0-noble with [email protected] npm package (versions must match).

Files

  • browse.js - Self-contained Node.js CLI (handles args + spawns podman)
  • SKILL.md - This documentation

Notes

  • First run will pull the container image (~1.5GB)
  • Uses --ipc=host for Chromium stability
  • Uses --init to handle zombie processes
  • Sandbox disabled when running as root (fine for trusted sites)
  • Each run starts a fresh container (clean but takes ~10-15s)