npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

assetprobe

v1.3.0

Published

Web asset discovery and reconnaissance tool with batch processing, screenshot, and HTML report generation

Readme

简体中文 | English

AssetProbe

npm version npm downloads Node.js Version License GitHub stars

Web asset discovery and reconnaissance tool with batch processing, screenshot, HTML report generation, and web application fingerprinting.

Features

  • 🌐 Dynamic Rendering: Powered by Playwright, renders JavaScript-heavy sites (SPA, React, Vue, Angular)
  • 🔄 Concurrent Processing: Batch process URLs with configurable concurrency (default: 5, range: 5-100)
  • 📸 Screenshot: Capture screenshots or full-page screenshots
  • 📊 Multi-format Reports: Auto-generated HTML reports and JSON exports
  • 🎯 Fingerprint Recognition: Identify web apps, middleware, and programming languages

Use Cases

1. Asset Discovery & Management

  • Internal Network Scanning: Quickly scan IP ranges or domain lists to identify web services
  • Asset Classification: Quickly identify system types through website titles
  • Visual Archiving: Visually record current website states through screenshots
  • Batch Verification: Check if large number of assets are alive

2. Security Testing Assistance

  • Information Gathering: Quickly identify live sites, collect titles and screenshots
  • Port Scan Verification: Verify web services with port scan results
  • Proxy Support: Access and test different network environments via proxy
  • Target Filtering: Filter high-value targets through screenshots

3. Website Health Check

  • Batch Monitoring: Regularly check key website status
  • Availability Reports: Generate HTML reports showing monitoring results
  • Failure Tracking: Uniformly mark "site inaccessible"

Core Value:

  • Efficient: Concurrent processing is 10-50x faster than sequential
  • 👁️ Visual: Screenshots + titles are easier to understand than plain text
  • 📊 Automated: Batch processing + report generation

Installation

Requirements

  • Node.js >= 18.0.0
  • npm or yarn

Option 1: Install via npm (Recommended)

npm install -g assetprobe

After installation, use assetprobe directly:

assetprobe -u https://www.example.com
assetprobe -b urls.txt -c 10

Option 2: Install from Source

# Clone the project
git clone https://github.com/OoO7ce/AssetProbe.git
cd AssetProbe

# Install dependencies (Chromium browser will be downloaded automatically)
npm install

# Run
npm start -- -u https://www.example.com
# or
node assetprobe.js -u https://www.example.com

Note: Chromium browser (~300MB) will be downloaded automatically on first run.

Usage

Basic Usage

# View help
assetprobe --help

# Access single website
assetprobe -u https://www.example.com

# Access with proxy
assetprobe -u https://www.example.com -p 127.0.0.1:7890

# Take screenshot
assetprobe -u https://www.example.com -s

# Full page screenshot
assetprobe -u https://www.example.com -s -f

# Export JSON to console
assetprobe -u https://www.example.com -j

# Save JSON to file
assetprobe -u https://www.example.com -j -o results.json

Batch Processing

# Batch process URL list
assetprobe -b urls.txt

# Batch process with screenshot (auto-generate HTML report)
assetprobe -b urls.txt -s

# Batch process with JSON export
assetprobe -b urls.txt -j

# Save JSON to file
assetprobe -b urls.txt -j -o results.json

# Adjust concurrency (default 5, range 5-100)
assetprobe -b urls.txt -c 20

URL List File Format (urls.txt):

https://www.example.com
https://www.example.org

# This is a comment, will be ignored
https://192.168.1.1:8080

Report Export

HTML Report

After batch processing, HTML reports are auto-generated with:

  • 📈 Statistics overview (total, success, failed, success rate)
  • 📋 Result list (URL, title, status code, web app fingerprint)
  • 🔍 Search and filter
  • 🖼️ Screenshot preview (thumbnail, click to enlarge)
  • 🎨 Modern white theme with smooth animations

JSON Report

# Single URL - output to console
assetprobe -u https://example.com -j

# Single URL - save to file
assetprobe -u https://example.com -j -o results.json

# Batch - output to console
assetprobe -b urls.txt -j

JSON report contains:

  • Timestamp
  • Results: URL, status code, title
  • Web app fingerprint (vendor, product, confidence)
  • Middleware detection
  • Programming language detection
  • Error codes for failed requests

Options

| Option | Description | Default | |--------|-------------|---------| | -u, --url <address> | Website address to visit | - | | -p, --proxy <address> | Proxy server (format: IP:PORT or http://IP:PORT) | - | | -b, --batch <file> | URL list file for batch processing | - | | -c, --concurrency <number> | Concurrent processing count | 5 | | -s, --screenshot [file] | Save website screenshot | - | | -f, --full | Capture full page | - | | -j, --json | Output JSON to console | - | | -o, --output <file> | Save JSON to file | - | | -h, --help | Show help | - |

Screenshot Notes

Single URL Mode

  • Save automatically by domain/IP
  • Filename: screenshot_timestamp.png
  • Custom filename supported

Batch Mode

  • Timestamp folder: screenshots/batch/timestamp/
  • Filename: domain.png
  • Auto-generate HTML report

Folder Structure

screenshots/
├── www.example.com/           # Single mode
│   └── screenshot_2025-12-31.png
└── batch/                      # Batch mode
    └── 2025-12-31T10-00-00/
        ├── report.html        # HTML report
        ├── results.json      # JSON report
        ├── www.example.com.png
        └── www.example.org.png

Performance Optimization

  • Default Concurrency: 5 (balance of performance and stability)
  • Adjustable Range: 5-100
  • Batch Mode Timeout: 30 seconds
  • Batch Mode Wait: 500ms

Performance Comparison:

Sequential: 100 URL × 2 sec = 200 sec (3.3 min)
Concurrent 5:   100 URL ÷ 5 × 2 sec = 40 sec
Concurrent 20:  100 URL ÷ 20 × 2 sec = 10 sec
Concurrent 50:  100 URL ÷ 50 × 2 sec = 4 sec

Status Code Reference

| Status Code | Meaning | Example | |-------------|---------|---------| | 200-299 | Success | 200 ✓ | | 300-399 | Redirect | 301 ↪ | | 400-499 | Client Error | 404 ⚠️ | | 500-599 | Server Error | 500 ❌ | | Connection Failed | Site unreachable | Site unreachable ✗ |

Development

NPM Scripts

npm start                      # Run main program
npm run install-browser        # Install browser manually

Global Install (Development)

If you want to install globally from local source:

# In project root
npm link

# Or use npm global install
npm install -g ./

# Test
assetprobe --help

Uninstall

# Uninstall global install
npm uninstall -g assetprobe

Project Structure

assetprobe/
├── assetprobe.js              # Main program
├── package.json               # Project config
├── README.md                  # Documentation (English)
├── README_CN.md               # Documentation (Chinese)
├── LICENSE                    # License
├── .npmignore                 # npm ignore rules
├── webapp-fingerprints.json   # Web app fingerprint database
├── middleware-fingerprints.json # Middleware fingerprint database
├── language-fingerprints.json  # Programming language fingerprint database
└── screenshots/               # Screenshot directory (auto-created)

Notes

  1. First Run: npm install will automatically download Chromium (~300MB)
  2. Proxy Address: Can omit http:// prefix, program handles automatically
  3. Timeout: Single mode 60 seconds, batch mode 30 seconds
  4. Anti-crawler: Some websites may have anti-crawler mechanisms, set request frequency reasonably
  5. Write Permission: Screenshots are saved in current directory, ensure write permission
  6. Concurrency: Start with low concurrency and increase gradually (5 → 10 → 20)

License

ISC License

Author

Ark

Contributing

Contributions are welcome! Please follow:

  1. Fork this repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'feat: add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

⭐ If This Project Helps You

Please give a ⭐ Star to support!

  • Click the Star button on the GitHub page
  • Share with friends who need it
  • Provide feedback and suggestions
  • Submit PRs to improve the project

Acknowledgments

  • Playwright - Modern browser automation tool
  • Web app fingerprint database organized from open source projects

Made with ❤️ by Ark