在 cURL 之前检查代理

Check proxy before cURL

我需要检查所选 $proxy 是否处于活动状态并执行循环,直到在 cURL 中使用它之前在 proxy.txt 中找到一个工作的循环。我怎么能那样做?下面是一个给定的代理函数。

<?php

function proxies()
{
  $proxylist = file("proxy.txt");
  $randomproxy = rand(0, sizeof($proxylist) - 1);
  $proxylist = $proxylist[$randomproxy];
  $words = explode(':', $proxylist);
  return $words;
}
$proxy = proxies();

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'url');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
curl_setopt($ch, CURLOPT_PROXY, $proxy[0]);
curl_setopt($ch, CURLOPT_PROXYPORT, $proxy[1]); 
curl_setopt($ch, CURLOPT_PROXYUSERPWD, "$username:$password");
....
?>

谢谢。

也许你可以 ping,像这样

function proxies()
{
    return file("proxy.txt");
}

foreach ($proxies() as $proxy) {
    $item = explode(':', $proxy);
    $waitTimeoutInSeconds = 1;
    
    if ($fp = fsockopen($item[0], $item[1], $errCode, $errStr, $waitTimeoutInSeconds)){   
       $ch = curl_init();

       curl_setopt($ch, CURLOPT_URL, 'url');
       curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
       curl_setopt($ch, CURLOPT_PROXY, $proxy[0]);
       curl_setopt($ch, CURLOPT_PROXYPORT, $proxy[1]); 
       curl_setopt($ch, CURLOPT_PROXYUSERPWD, "$username:$password");

       break;
    }
}  

fclose($fp);