🎉 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:
- Your browser received a challenge page
- JavaScript calculated a SHA-256 based proof-of-work
- A cookie was set with the valid solution
- 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
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