info('Fetching proxies from CDN...'); try { $response = Http::get('https://cdn.jsdelivr.net/gh/proxifly/free-proxy-list@main/proxies/all/data.json'); if (!$response->successful()) { throw new \Exception('Failed to fetch proxies: ' . $response->status()); } $proxies = $response->json(); $this->info('Found ' . count($proxies) . ' proxies'); $bar = $this->output->createProgressBar(count($proxies)); $bar->start(); $saved = 0; $skipped = 0; foreach ($proxies as $proxyData) { // Check if proxy already exists $exists = Proxy::where('proxy', $proxyData['proxy'])->exists(); if (!$exists) { Proxy::create([ 'proxy' => $proxyData['proxy'], 'protocol' => $proxyData['protocol'], 'ip' => $proxyData['ip'], 'port' => $proxyData['port'], 'https' => $proxyData['https'], 'anonymity' => $proxyData['anonymity'], 'score' => $proxyData['score'], 'country' => $proxyData['geolocation']['country'] ?? null, 'city' => $proxyData['geolocation']['city'] ?? null, ]); $saved++; } else { $skipped++; } $bar->advance(); } $bar->finish(); $this->newLine(); $this->info("Proxies imported successfully!"); $this->info("New proxies saved: {$saved}"); $this->info("Existing proxies skipped: {$skipped}"); } catch (\Exception $e) { $this->error('Error: ' . $e->getMessage()); return 1; } return 0; } }