
Research
Two Malicious Rust Crates Impersonate Popular Logger to Steal Wallet Keys
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
chromancer
Advanced tools
A powerful command-line interface for automating Chrome browser using Playwright. Perfect for web scraping, automation, testing, and browser workflows.
A powerful command-line interface for automating Chrome browser using Playwright. Perfect for web scraping, automation, testing, and browser workflows.
chromancer init
npm install -g chromancer
# First time? Run the setup wizard
chromancer init
# Start Chrome
chromancer spawn
# Try it out!
chromancer navigate https://example.com
chromancer screenshot example.png
# Start Chrome with remote debugging
chromancer spawn # Opens Chrome
chromancer spawn --headless # Headless mode
chromancer spawn --profile work # Use Chrome profile
# Navigate pages
chromancer navigate https://example.com
chromancer go https://example.com # Alias for navigate
# Stop Chrome
chromancer stop
# Use natural language to control the browser
chromancer ai "click the login button and wait for dashboard"
chromancer ai "scroll down and take a screenshot of the footer"
chromancer ai "extract all product prices from this page"
# Interactive mode with AI feedback loop
chromancer ai "find and click all download links"
# AI will verify results and refine if needed
# Preview generated workflow without executing
chromancer ai --dry-run "fill out the contact form"
# Skip interactive verification
chromancer ai --no-interactive "navigate to settings and click logout"
# Default command - just type your instruction!
chromancer "take a screenshot of the hero section"
The Claude command includes intelligent DOM analysis and optimization features that automatically activate during workflow generation and refinement:
When it's triggered:
--auto-inspect
flag is enabled (default: true)How it works:
Mini DOM Digest (~2-3KB)
Intelligent Selector Ranking
Structured Run Logs
Enhanced Autofix Loop
Why it matters:
Example workflow with optimizations:
# First attempt might fail
chromancer ai "extract all product prices"
# 🔍 DOM inspection automatically activates
# 📊 Generates mini digest with top patterns
# 🎯 AI receives: ".price-tag (47 elements)", ".product-price (23 elements)"
# ✅ Second attempt uses better selectors
# Click elements
chromancer click "button.submit"
chromancer click "#menu" --right # Right click
# Type text
chromancer type "input[name=email]" "user@example.com"
chromancer type "#search" "query" --press-enter
# Fill forms automatically
chromancer fill --auto-generate # Generate test data
chromancer fill --data '{"name": "John", "email": "john@example.com"}'
# Scroll pages
chromancer scroll down
chromancer scroll --to "#footer"
chromancer scroll --by 500 # Pixels
# Take screenshots
chromancer screenshot page.png
chromancer shot page.png # Alias
# Generate PDFs
chromancer pdf --output report.pdf --format A4
# Export page data
chromancer export --format json --selector "table"
chromancer export --format csv --output data.csv
# Quick data extraction
chromancer quick extract https://news.site "h2.headline"
# Inspect DOM to find selectors
chromancer inspect "product prices" # AI-powered selector discovery
chromancer inspect "search results" --json # Raw inspection data
chromancer inspect "navigation links" --selector "nav" # Limit scope
# Quick site check
chromancer quick check example.com
# Comprehensive site test
chromancer quick test example.com # Tests a11y, performance, mobile, console errors
# Monitor network traffic
chromancer network --filter "api" --type xhr
chromancer network --block "ads" --block "analytics"
# Wait for conditions
chromancer wait --selector ".loaded"
chromancer wait --text "Success"
chromancer wait --url "https://example.com/dashboard"
The Claude command transforms natural language into Chromancer workflows with intelligent feedback and verification:
# Basic automation
chromancer ai "go to github.com and click the sign in button"
# Data extraction with automatic formatting
chromancer ai "extract all article headlines and save them as JSON"
# Complex workflows
chromancer ai "login to dashboard, navigate to reports, and download the monthly CSV"
# With verification
chromancer ai "find all product cards and verify each has a price"
# Preview without executing
chromancer ai --dry-run "fill out the entire registration form"
# Skip interactive feedback
chromancer ai --no-interactive "take screenshots of each section"
# Set maximum retry attempts
chromancer ai "find and click the hidden menu"
# Disable auto DOM inspection
chromancer ai --no-auto-inspect "click the submit button"
Create reusable automation scripts with YAML:
# login.yml
- navigate: https://github.com/login
- type:
selector: input[name="login"]
text: ${USERNAME}
- type:
selector: input[name="password"]
text: ${PASSWORD}
- click: input[type="submit"]
- wait:
url: https://github.com
- screenshot: logged-in.png
Run with variables:
chromancer run login.yml --var USERNAME=myuser --var PASSWORD=mypass
# scrape-news.yml
- navigate: https://news.ycombinator.com
- wait: .itemlist
- evaluate: |
Array.from(document.querySelectorAll('.athing')).slice(0, 10).map(item => ({
title: item.querySelector('.titleline a')?.textContent,
link: item.querySelector('.titleline a')?.href
}))
- export:
format: json
output: news-stories.json
Record your interactions and generate automation scripts:
# Start recording
chromancer record --output actions.json
# Perform actions in browser...
# Press Ctrl+C to stop
# Generate JavaScript
chromancer record --output script.js --format js
Save and restore browser sessions:
# Save cookies
chromancer cookies save --output session.json
# Restore cookies
chromancer cookies load --file session.json
# Manage individual cookies
chromancer cookies list
chromancer cookies set sessionId=abc123
chromancer cookies delete trackingId
The inspect command helps you discover working selectors intelligently:
# Find selectors for specific content
chromancer inspect "product prices"
chromancer inspect "article titles"
chromancer inspect "navigation menu"
# Get raw JSON data for advanced analysis
chromancer inspect "search results" --json
# Limit inspection to specific areas
chromancer inspect "prices" --selector ".product-grid"
The inspector provides:
Start an interactive session for rapid testing:
chromancer interactive
# In the session:
> navigate https://example.com
> click button
> type input "text"
> screenshot test.png
> help # Show all commands
> exit
Set persistent defaults:
# View current config
chromancer config list
# Set defaults
chromancer config set chrome.port 9223
chromancer config set commands.screenshot.fullPage true
chromancer config set ui.colorOutput false
# Reset to defaults
chromancer config reset
# List all example categories
chromancer examples --list
# View specific examples
chromancer examples login # Authentication patterns
chromancer examples scraping # Data extraction
chromancer examples testing # Site testing
chromancer examples forms # Form automation
# Quick site check - health, performance, accessibility
chromancer quick check example.com
# Quick screenshot
chromancer quick capture https://example.com screenshot.png
# Quick data extraction
chromancer quick extract https://news.site "article h2" --json
Use different Chrome profiles for different tasks:
# Personal browsing
chromancer spawn --profile personal
# Work browsing with saved logins
chromancer spawn --profile work
Handle authentication flows:
# Navigate and wait for manual login
chromancer wait-for-login https://app.example.com
# With custom ready selector
chromancer wait-for-login https://github.com --ready-selector ".Header-link--profile"
# Continue on error
chromancer run workflow.yml --continue-on-error
# Strict mode (default) - stop on first error
chromancer run workflow.yml --strict
Chromancer provides helpful error messages with solutions:
❌ Element not found: button
💡 Tip: Did you forget to add a class (.) or ID (#) prefix?
Example:
chromancer click ".button" # for class
chromancer click "#button" # for ID
📚 Docs: https://chromancer.dev/docs/click#errors
# Run unit tests
npm test
# Run working features test
node test/test-working-features.js
# Test with Docker Chrome
docker run -d --name chrome-test -p 9222:9222 zenika/alpine-chrome \
--no-sandbox --remote-debugging-host=0.0.0.0 --remote-debugging-port=9222
#!/bin/bash
chromancer spawn --headless
chromancer navigate https://dashboard.example.com
chromancer wait --selector ".data-loaded"
chromancer screenshot "dashboard-$(date +%Y%m%d).png"
chromancer stop
# test-registration.yml
- navigate: https://app.example.com/register
- fill:
form:
firstName: Test
lastName: User
email: test@example.com
password: SecurePass123!
- click: input[name="terms"]
- screenshot: form-filled.png
- click: button[type="submit"]
- wait:
text: "Registration successful"
# Monitor API calls for 30 seconds
chromancer navigate https://app.example.com
chromancer network --filter "/api/" --duration 30000 --output api-calls.json
# Analyze the results
cat api-calls.json | jq '.[] | select(.duration > 1000)'
# Extract data with natural language
chromancer ai "extract all product names and prices from this page"
# Automatically saves to timestamped JSON file
# Complex data extraction
chromancer ai "find all news articles, get their titles, dates, and first paragraph"
# Table extraction
chromancer ai "extract the pricing table and save it as CSV"
# Multi-step scraping
chromancer ai "go to the blog section, then extract all post titles and links"
# Or use the default command!
chromancer "scrape all email addresses from this page"
# Let chromancer find Chrome
chromancer spawn
# Or specify Chrome location
export CHROME_PATH="/path/to/chrome"
# Use verbose mode for detailed logs
chromancer navigate https://example.com --verbose
# Check Chrome connection
chromancer quick check localhost
chromancer stop
or specify a different port with --port
--timeout 60000
chromancer select
to explore available elementsgit checkout -b feature/amazing-feature
)git commit -m 'Add some amazing feature'
)git push origin feature/amazing-feature
)MIT © John Lindquist
Chromancer is now powered by Playwright for robust browser automation.
FAQs
A powerful command-line interface for automating Chrome browser using Playwright. Perfect for web scraping, automation, testing, and browser workflows.
We found that chromancer demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
Research
A malicious package uses a QR code as steganography in an innovative technique.
Research
/Security News
Socket identified 80 fake candidates targeting engineering roles, including suspected North Korean operators, exposing the new reality of hiring as a security function.