Protected Content - Plack::Middleware::ProofOfWork

# 🎉 Protected Content

✓ Success! You have successfully solved the Proof-of-Work challenge and gained access.

## What Just Happened?

When you first visited this page, your browser automatically solved a cryptographic puzzle (Proof-of-Work). This protects the page from automated bots and scraping attempts while allowing legitimate users through after a brief calculation.

🔐 How It Works:

1. Your browser received a challenge page
2. JavaScript calculated a SHA-256 based proof-of-work
3. A cookie was set with the valid solution
4. The page reloaded and you gained access

## Technical Details

- Algorithm: SHA-256 hashing with fractional difficulty support
- Difficulty: 4 leading zeros (approx. 65,000 attempts, ~1-2 seconds)
- Cookie validity: 5 days
- Search engines: Automatically allowed (Googlebot, Bingbot, etc.)
- Bot protection: PoW validated before bot check (v0.05+)
- Template system: External HTML template (v0.05+)

## Your Browser Information

## What Happens on Next Visit?

For the next 5 days, you can visit this page without recalculation. Your browser will present the valid cookie automatically. After the cookie expires, you'll need to solve a new puzzle.

💡 Fun Fact: The middleware checks your cookie before checking if you're a bot. This means even bots with invalid cookies must solve the proof-of-work!

## Try It Out

🔄 Reload Page (no PoW needed - you have a valid cookie)
🗑️ Delete Cookie & Force New PoW (you'll see the challenge page again)

## Configuration Used

    enable "ProofOfWork",
        difficulty => 4,           # 4 leading zeros (~1-2 seconds)
        cookie_name => 'pow',      # Cookie name
        cookie_duration => 5,      # 5 days validity
        allow_bots => 1;           # Allow search engines

## Customization Options

- difficulty: Use fractional values like 4.5 for fine-grained control
- js_file: Replace `share/pow.js` with your custom logic
- html_file: Replace `share/challenge.html` with your custom UI
- bot_patterns: Customize which bots are allowed through

Plack::Middleware::ProofOfWork v0.07
Example application • See README.md for full documentation