# PPF Configuration # Copy this file to config.ini and adjust as needed. [common] # Comma-separated list of Tor SOCKS5 proxy addresses tor_hosts = 127.0.0.1:9050 # Network timeouts (seconds) timeout_connect = 10 timeout_read = 15 # Enable cProfile profiling (writes to data/profile.stats) profiling = 0 [watchd] # Proxy validation daemon settings # Database file for proxy storage database = proxies.sqlite # SSL-first mode: try SSL handshake first, fallback to secondary check on failure ssl_first = 1 # Secondary check type (used when ssl_first fails, or as primary when ssl_first=0) # judges - HTTP judge servers that echo back request headers # irc - IRC server connection test (port 6667) # head - HTTP HEAD request test (port 80) checktype = head # Thread configuration threads = 50 min_threads = 5 # Timeout for proxy test connections (seconds) timeout = 15 # Adaptive timeout: extra time per failure (seconds) timeout_fail_inc = 1.5 timeout_fail_max = 15 # Number of failures before proxy marked dead max_fail = 5 # Check intervals (seconds) checktime = 1800 perfail_checktime = 3600 # Minimum success rate to accept results (percentage) outage_threshold = 4.0 # Batch size for database writes submit_after = 200 # Days before removing dead proxies stale_days = 30 # Seconds between stats reports (0 = disabled) stats_interval = 300 # Re-test old (previously dead) proxies oldies = 0 oldies_checktime = 43200 oldies_multi = 10 # Server list file for IRC/head checks source_file = servers.txt # Enable Tor circuit health monitoring tor_safeguard = 1 # Thread scaling scale_cooldown = 10 scale_threshold = 10.0 # Debug output debug = 0 [ppf] # URL harvester settings # Database file (usually same as watchd) database = proxies.sqlite # Number of URL fetcher threads threads = 3 # Timeout for URL fetches (seconds) timeout = 15 # HTTP connection retries http_retries = 1 # Check intervals for URLs (seconds) checktime = 3600 perfail_checktime = 3600 # Number of failures before URL marked dead max_fail = 5 # Only extract URLs from same domain extract_samedomain = 0 # Max age in days for proxy list URLs # URLs older than this that never produced proxies are skipped list_max_age_days = 7 # Debug output debug = 0 [scraper] # Search engine scraper settings # Enable scraper enabled = 1 # Number of scraper threads threads = 3 # Search engines: searx, duckduckgo, startpage, brave, ecosia, # mojeek, qwant, yandex, github, gitlab, codeberg, gitea engines = searx,duckduckgo,github # Query mode: p=proxies, s=search, w=websites (combine: psw) query = psw # Max pages to fetch per query max_pages = 5 # Rate limiting: backoff delays (seconds) backoff_base = 30 backoff_max = 3600 fail_threshold = 2 # LibreTranslate for multilingual queries (optional) libretranslate_enabled = 0 libretranslate_url = https://lt.mymx.me/translate # Debug output debug = 0 [httpd] # Web dashboard settings # Enable web dashboard enabled = 1 # Listen address (use 0.0.0.0 for all interfaces) listenip = 127.0.0.1 # Listen port port = 8081 [worker] # Distributed worker settings (for --worker mode) # Proxies per work batch batch_size = 100 # Heartbeat interval in seconds heartbeat = 60 # Seconds before unclaimed work is released claim_timeout = 300