Proxy System Overview
IronBullet includes a sophisticated proxy rotation system with automatic ban detection, health checking, and multiple rotation modes. This allows you to distribute requests across many proxies to avoid rate limits and IP bans.Proxies are essential for high-volume checking. Without proxies, your IP will quickly get rate-limited or banned.
Proxy Settings Structure
Fromsrc/pipeline/mod.rs:83-112:
Proxy Modes
Fromsrc/pipeline/mod.rs:123-132:
None
No proxies - Direct connection to target.Use when:
- Testing locally
- Internal APIs without rate limits
- Single-threaded checking
Rotate
Random proxy per request - Each HTTP request uses a different proxy.Use when:
- Maximum distribution needed
- No session persistence required
- Large proxy pool available
Sticky
One proxy per data line - All requests for a credential use the same proxy.Use when:
- Multi-step login flows
- Session/cookie persistence needed
- Target tracks IP per session
CpmLimited
Rate-limited rotation - Limit checks per minute per proxy.Use when:
- Avoiding aggressive rate limits
- Preserving proxy health
- Controlled request rate needed
Proxy Sources
Fromsrc/pipeline/mod.rs:134-152:
- File Source
- URL Source
- Inline Source
Load proxies from a text file:File format (proxies.txt):Or plain
host:port (uses default_proxy_type):Proxy Formats
Fromsrc/runner/proxy_pool.rs:123-165, IronBullet supports multiple proxy formats:
Full URL Format
Full URL Format
Host:Port Format
Host:Port Format
default_proxy_type from source settings.Authenticated Format (2 parts)
Authenticated Format (2 parts)
username:password@host:portAuthenticated Format (5 parts)
Authenticated Format (5 parts)
Ban Detection and Health Checking
Fromsrc/runner/proxy_pool.rs:6-109, the proxy pool automatically tracks proxy health:
How Ban Detection Works
Retry Logic
Fromsrc/pipeline/mod.rs:173-233, retry behavior is configurable:
Example Configuration
- Request fails with
Banstatus - Retry count increments (1/5)
- After 3 Ban results, proxy marked as banned for 300 seconds
- New proxy selected
- Continues until max_retries (5) reached or Success/Fail
Proxy Groups
Fromsrc/pipeline/mod.rs:114-121, you can define named proxy groups:
Concurrent Proxy Usage
Fromsrc/pipeline/mod.rs:188:
concurrent_per_proxy: 10, max 1000 concurrent requests (100 × 10).
Monitoring Proxy Health
Fromsrc/runner/proxy_pool.rs:97-108:
- Total proxies loaded
- Active proxies (not banned)
- Banned proxies (temporarily unavailable)
Best Practices
Proxy Quality
- Use residential/mobile proxies for aggressive targets
- Test proxy quality before large runs
- Remove dead proxies regularly
- Prefer authenticated proxies for reliability
Ban Management
- Set
ban_duration_secsbased on target’s timeout - Increase
max_retries_before_banfor unreliable proxies - Monitor ban rate to adjust thread count
- Use larger proxy pools for high thread counts
Mode Selection
- Use Sticky for multi-step login flows
- Use Rotate for maximum distribution
- Use CpmLimited to preserve proxy health
- Use None only for testing
Performance
- More proxies = more threads possible
- Adjust
concurrent_per_proxybased on proxy quality - Use URL sources with auto-refresh for dynamic lists
- Balance thread count with proxy pool size
Common Patterns
Sticky Mode for Login
Sticky Mode for Login
Rotate Mode with Ban Detection
Rotate Mode with Ban Detection
CPM Limited for Gentle Checking
CPM Limited for Gentle Checking
Troubleshooting
All proxies banned quickly
All proxies banned quickly
Problem: Proxy pool exhausted within seconds.Solutions:
- Reduce thread count
- Increase
ban_duration_secs - Increase
max_retries_before_ban - Get more/better proxies
- Switch to CpmLimited mode
- Lower
concurrent_per_proxy
Proxies not rotating
Proxies not rotating
Problem: Same proxy used repeatedly.Solutions:
- Check
proxy_modeis Rotate, not Sticky - Verify proxy file has multiple proxies
- Check for errors in proxy file format
- Ensure proxies are not all banned
Proxy authentication failing
Proxy authentication failing
Problem: 407 Proxy Authentication Required.Solutions:
- Use format
http://user:pass@host:port - Or format
host:port:user:pass - Check username/password are correct
- URL-encode special characters in password
Performance degradation
Performance degradation
Problem: CPM drops over time.Solutions:
- Proxies getting banned - increase pool size
- Target rate limiting - reduce threads
- Proxy quality issues - test and filter
- Check ban detection logic in KeyCheck