在PHP中我使用的是代理,捲曲下列要求:我如何知道我的捲髮代理是否已關閉?
CURLOPT_HTTPPROXYTUNNEL, 1,
CURLOPT_PROXY, ''.$current_proxy.'',
和我有備份代理知識產權的中有一個數據庫,但我想知道我可以檢測是否代理已經下來,它可以切換變量$current_proxy
。
對於檢測服務器是否關閉,您有何建議?謝謝。
在PHP中我使用的是代理,捲曲下列要求:我如何知道我的捲髮代理是否已關閉?
CURLOPT_HTTPPROXYTUNNEL, 1,
CURLOPT_PROXY, ''.$current_proxy.'',
和我有備份代理知識產權的中有一個數據庫,但我想知道我可以檢測是否代理已經下來,它可以切換變量$current_proxy
。
對於檢測服務器是否關閉,您有何建議?謝謝。
Curl不區分代理是否關閉或頁面不存在(或者該頁面所在的服務器關閉)。這就是爲什麼你需要自己發明解決方法。至少丹尼爾從Haxx AB said it。
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!";
}
}
你可以只是嘗試以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;
}
我在執行腳本時遇到了麻煩。在「@fsockopen」 - 整個主機無法訪問。 – LINKeRxUA
難道你不能簡單地檢查如果'curl_exec()'返回'FALSE',並且它嘗試使用不同的代理? – EdoDodo
只是谷歌它:http://madppc.com/php-proxy-checker-using-curl_multi/ – hakre
@EdoDodo:當你嘗試所有代理(包括工作的)在一個不存在的頁面上,你可能會來該方法無效的結論。 – hakre