Overview
Many torrent indexers use Cloudflare to prevent scraping and automated access. FlareSolverr acts as a middleware proxy that:- Solves JavaScript challenges that verify browser authenticity
- Handles CAPTCHA challenges (when solvable programmatically)
- Manages cookies to maintain authenticated sessions
- Proxies requests through a headless browser
Installation
Docker (Recommended)
FlareSolverr is automatically included in Plank’s Docker Compose setup:Bare Metal
For manual installation:Install dependencies
FlareSolverr requires:
- Python 3.8+
- Chromium or Chrome browser
- Selenium WebDriver
Configuration
Docker Setup
The Docker Compose configuration automatically sets up FlareSolverr:configure-prowlarr.sh).
Manual Prowlarr Setup
If configuring Prowlarr manually:Add FlareSolverr proxy
Click the + button to add a new indexer proxy.Select FlareSolverr from the list.
Configure the proxy
Set the following:
- Name:
FlareSolverr - Host:
http://localhost:8191(bare metal) orhttp://flaresolverr:8191(Docker) - Request Timeout:
60seconds
Automatic Configuration (configure-prowlarr.sh:107-139)
Plank’s Docker setup automatically configures FlareSolverr:
How It Works
When Prowlarr searches an indexer with FlareSolverr enabled:- Prowlarr sends the request to FlareSolverr instead of directly to the indexer
- FlareSolverr launches a headless browser (Chromium)
- The browser navigates to the indexer URL
- JavaScript challenges are executed in the real browser environment
- Cookies are captured after solving challenges
- FlareSolverr returns the HTML response to Prowlarr
- Prowlarr parses the results as if it had accessed the site directly
Request Flow
Testing FlareSolverr
Health Check
Verify FlareSolverr is running:Test Request (configure-prowlarr.sh:141-157)
The initialization script tests FlareSolverr connectivity:
Manual Test
Test solving a Cloudflare challenge:"status":"ok" and the page HTML.
Performance Considerations
Resource Usage
FlareSolverr is resource-intensive because it runs a real browser:- Memory: 200-500 MB per concurrent request
- CPU: Moderate usage during JavaScript execution
- Startup time: 5-15 seconds for first request (browser initialization)
- Request time: 5-30 seconds per Cloudflare-protected page
Optimization Tips
- Only use for protected indexers - Don’t assign FlareSolverr to indexers that don’t need it
- Increase timeout - Set
requestTimeoutto 60+ seconds for slow indexers - Limit concurrent requests - FlareSolverr handles one request at a time by default
- Monitor memory - Restart FlareSolverr periodically if memory grows
- Use dedicated container - Run FlareSolverr in a separate Docker container (already done in Plank’s setup)
Troubleshooting
FlareSolverr not responding
Problem: Requests to FlareSolverr time out or fail. Solutions:- Check if FlareSolverr container is running:
docker ps | grep flaresolverr - View logs:
docker logs flaresolverr - Restart the container:
docker restart flaresolverr - Verify port 8191 is not blocked by firewall
- Ensure Chromium/Chrome is installed (bare metal)
Cloudflare challenges still blocking
Problem: Indexers return Cloudflare error pages despite FlareSolverr. Solutions:- Some indexers use CAPTCHA challenges that FlareSolverr can’t solve automatically
- Increase
requestTimeoutin Prowlarr (try 90-120 seconds) - Check FlareSolverr logs for specific error messages
- Try accessing the indexer directly in a browser to see what challenge appears
- Consider using a different indexer if challenges are unsolvable
Browser crashes or timeouts
Problem: FlareSolverr logs show browser crashes or timeout errors. Solutions:- Increase Docker container memory limit (try 1GB+)
- Set
LOG_LEVEL=debugin FlareSolverr environment to see detailed errors - Update FlareSolverr to the latest version
- Check if
/dev/shmhas enough space (browser needs shared memory) - Restart FlareSolverr to clear stale browser processes
Prowlarr can’t connect to FlareSolverr
Problem: Prowlarr shows FlareSolverr proxy as unhealthy. Solutions:- Docker: Use
http://flaresolverr:8191(service name, not localhost) - Bare metal: Use
http://localhost:8191 - Verify both services are on the same Docker network
- Check if FlareSolverr is accessible:
curl http://flaresolverr:8191/(from Prowlarr container) - Review Prowlarr logs for specific connection errors
Environment Variables
FlareSolverr supports these configuration options:Indexers That Need FlareSolverr
Common indexers that require Cloudflare bypass:- 1337x - Often uses Cloudflare challenges
- The Pirate Bay - Intermittent Cloudflare protection
- TorrentGalaxy - Uses JavaScript challenges
- LimeTorrents - Cloudflare-protected
- RARBG mirrors - Many mirrors use Cloudflare
- YTS - No Cloudflare protection
- EZTV - Direct API access
- Nyaa.si - No anti-bot protection
- AnimeTosho - API-friendly
Security Considerations
FlareSolverr runs a real browser, which has security implications:- Isolate the container - Use Docker for sandboxing
- Don’t expose port 8191 publicly - Only allow access from Prowlarr
- Keep updated - Update FlareSolverr regularly for security patches
- Monitor resource usage - Prevent abuse by monitoring logs and traffic
- Use behind VPN - Route FlareSolverr traffic through a VPN for privacy