Troubleshooting¶
Solutions to common issues with recurl.
Installation Issues¶
"Command not found: recurl"¶
The binary is not in your PATH.
Solution:
# Add to PATH (Linux/macOS)
export PATH="/usr/local/recurl:$PATH"
# Or use full path
/usr/local/recurl/recurl --version
Alias Not Working¶
The shell alias may not be set up correctly.
Solution:
# Check if alias exists
alias curl
# Re-add alias
echo 'alias curl="/usr/local/recurl/recurl"' >> ~/.bashrc
source ~/.bashrc
Chromium Issues¶
"Chromium auto-download not available"¶
You're on Linux ARM64 where auto-download isn't supported.
Solution:
# Install Chromium manually
# Ubuntu/Debian:
sudo apt install chromium-browser
# Fedora:
sudo dnf install chromium
# Arch:
sudo pacman -S chromium
"Failed to launch browser"¶
Chromium couldn't start. Common causes:
-
Missing dependencies
-
No display (headless server)
-
Sandbox issues
"Chromium download timeout"¶
Network issues during Chromium download.
Solution:
# Retry with debug
recurl --recurl-debug --recurl-js https://example.com
# Or use system Chrome
# Install Chrome and recurl will find it
Request Issues¶
Still Getting 403 After Escalation¶
The site may have additional protections.
Try:
-
Force JS preflight
-
Wait for specific element
-
Increase timeout
-
Check debug output
Request Hangs¶
Possible timeout or infinite wait.
Solution:
# Set explicit timeout
recurl --recurl-js --recurl-js-timeout 30000 https://site.com
# Or use curl timeout
recurl --max-time 60 https://site.com
Wrong Content Returned¶
The page may require JavaScript rendering.
Solution:
# Get rendered HTML
recurl --recurl-js-rendered https://spa-site.com
# Wait for content
recurl --recurl-js-rendered --recurl-js-wait "#app-loaded" https://spa-site.com
Daemon Issues¶
"Failed to connect to daemon"¶
The daemon may not be running or socket is stale.
Solution:
# Remove stale socket (Linux/macOS)
rm /tmp/recurl.*.sock
# Try again
recurl --recurl-js https://example.com
Daemon Using Too Much Memory¶
The browser pool consumes memory.
Solution:
# Reduce idle timeout
export RCURL_DAEMON_IDLE_MS=10000
# Or disable daemon
recurl --recurl-daemon off --recurl-js https://example.com
Daemon Won't Stop¶
Force kill the daemon process.
Solution:
Performance Issues¶
Slow First Request¶
First JS preflight downloads Chromium and launches browser.
This is normal. Subsequent requests will be faster.
Slow Subsequent Requests¶
Daemon may not be running.
Check:
# See if daemon is active
ps aux | grep recurld
# Enable debug to see daemon usage
recurl --recurl-debug --recurl-js https://example.com
High CPU Usage¶
Browser automation is CPU-intensive.
Mitigations:
# Reduce daemon timeout
export RCURL_DAEMON_IDLE_MS=30000
# Disable daemon for one-off requests
recurl --recurl-daemon off --recurl-js https://example.com
Debug Mode¶
Always start troubleshooting with debug mode:
Debug output shows:
- Which engine was used
- Detection results
- Escalation steps
- Cookie extraction
- Final result
Combined with curl verbose¶
Shows both recurl decisions and curl network details.
Common Error Messages¶
| Error | Meaning | Solution |
|---|---|---|
curl_engine: 403 | Request blocked | Let recurl escalate or use --recurl-js |
Detected: Cloudflare | CF protection found | Normal, recurl will escalate |
Browser launch timeout | Chromium took too long | Check system resources |
Navigation timeout | Page load timeout | Increase --recurl-js-timeout |
Selector not found | Wait element missing | Check selector or increase timeout |
Failed to create socket | IPC issue | Remove stale socket file |
Getting Help¶
Provide Debug Output¶
When reporting issues, include:
Check Version¶
System Information¶
Report Issues¶
Open an issue at GitHub Issues with:
- recurl version
- Operating system and architecture
- Debug output
- Steps to reproduce