2011-08-06 81 views
2

在PHP中我使用的是代理,捲曲下列要求:我如何知道我的捲髮代理是否已關閉?

CURLOPT_HTTPPROXYTUNNEL, 1, 
CURLOPT_PROXY, ''.$current_proxy.'', 

和我有備份代理知識產權的中有一個數據庫,但我想知道我可以檢測是否代理已經下來,它可以切換變量$current_proxy

對於檢測服務器是否關閉,您有何建議?謝謝。

+1

難道你不能簡單地檢查如果'curl_exec()'返回'FALSE',並且它嘗試使用不同的代理? – EdoDodo

+0

只是谷歌它:http://madppc.com/php-proxy-checker-using-curl_multi/ – hakre

+0

@EdoDodo:當你嘗試所有代理(包括工作的)在一個不存在的頁面上,你可能會來該方法無效的結論。 – hakre

回答

0

Curl不區分代理是否關閉或頁面不存在(或者該頁面所在的服務器關閉)。這就是爲什麼你需要自己發明解決方法。至少丹尼爾從Haxx AB said it

1

LIST.TXT包含如:

1.2.3.4:2487 123.123.123.123:3248

等PHP代碼是這樣的...

$url = "http://www.google.com"; 
$proxies = file("list.txt"); 

foreach($proxies as $proxy) 
{ 
    $ch = curl_init($url); 
    curl_setopt($ch,CURLOPT_PROXY,$proxy); 
    curl_setopt($ch,CURLOPT_HTTPPROXYTUNNEL,$proxy); 
    $page = curl_exec($ch); 
    curl_close($ch); 
    $check = stripos($page,'</html>'); // not pretty :) 

     if($check > 0) 
     { 
      echo $proxy . " Works!"; 
     }else{ 
      echo $proxy . " Is Dead!"; 
     } 
} 
3

你可以只是嘗試以fsockopen這樣的方式連接到代理:

$proxy = '98.255.255.255:8080'; 
$timeout = 5; 
$splited = explode(':',$proxy); // Separate IP and port 
if($con = @fsockopen($splited[0], $splited[1], $errorNumber, $errorMessage, $timeout)) 
{ 
    echo 'Connection successful, PROXY works!'; 
} else { 
    echo $errorNumber . ' ' . $errorMessage; 
} 
+0

我在執行腳本時遇到了麻煩。在「@fsockopen」 - 整個主機無法訪問。 – LINKeRxUA

相關問題