diff --git a/backend/src/services/crawl-rotator.ts b/backend/src/services/crawl-rotator.ts index 6cf0a553..1700baee 100644 --- a/backend/src/services/crawl-rotator.ts +++ b/backend/src/services/crawl-rotator.ts @@ -1035,7 +1035,7 @@ export function getEvomiConfig(): EvomiConfig { * Build a geo-targeted Evomi proxy URL * * @param stateCode - US state code (e.g., 'AZ') - * @param workerId - Worker ID for session stickiness + * @param workerId - Worker ID (ignored - using rotating IPs) * @param city - Optional city name (lowercase, dots for spaces) * @returns Proxy URL or null if Evomi not configured */ @@ -1056,14 +1056,6 @@ export function buildEvomiProxyUrl( return null; } - // Use the passed session ID directly (from identity pool) or generate from worker ID - // Identity pool passes unique session IDs like "scrapc-1702...-abc123" - // Regular callers pass worker IDs - we add region suffix for stickiness - const isIdentitySession = sessionOrWorkerId.includes('-') && sessionOrWorkerId.length > 20; - const sessionId = isIdentitySession - ? sessionOrWorkerId.replace(/[^a-zA-Z0-9]/g, '').slice(0, 20) // Use identity session (max 20 chars) - : `${sessionOrWorkerId.replace(/[^a-zA-Z0-9]/g, '').slice(0, 6)}${region.slice(0, 4)}`; // Worker ID + region - // Build geo target string let geoParams = `_country-US_region-${region}`; let geoDisplay = region; @@ -1073,9 +1065,8 @@ export function buildEvomiProxyUrl( geoDisplay = `${city}, ${region}`; } - // Build full proxy URL - // Format: http://user:pass_geo_session@host:port - const url = `http://${config.user}:${config.pass}${geoParams}_session-${sessionId}_lifetime-${config.sessionLifetimeMinutes}@${config.host}:${config.port}`; + // Build full proxy URL - rotating (no session = new IP each request) + const url = `http://${config.user}:${config.pass}${geoParams}@${config.host}:${config.port}`; return { url,