Php 我如何知道我的旋度代理是否已关闭?
在PHP中,我使用的是带有curl的代理,如下所示:Php 我如何知道我的旋度代理是否已关闭?,php,curl,proxy,Php,Curl,Proxy,在PHP中,我使用的是带有curl的代理,如下所示: CURLOPT_HTTPPROXYTUNNEL, 1, CURLOPT_PROXY, ''.$current_proxy.'', 我有一个数据库,里面有备份代理ip,但我想知道如何检测代理是否已关闭,以便它可以切换变量$current\u proxy 您建议如何检测服务器是否停机?谢谢。Curl不区分代理服务器是否关闭或页面是否不存在(或此页面所在的服务器是否关闭)。这就是为什么你需要自己发明变通方法。至少来自Haxx AB的Daniel。
CURLOPT_HTTPPROXYTUNNEL, 1,
CURLOPT_PROXY, ''.$current_proxy.'',
我有一个数据库,里面有备份代理ip,但我想知道如何检测代理是否已关闭,以便它可以切换变量$current\u proxy
您建议如何检测服务器是否停机?谢谢。Curl不区分代理服务器是否关闭或页面是否不存在(或此页面所在的服务器是否关闭)。这就是为什么你需要自己发明变通方法。至少来自Haxx AB的Daniel。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!";
}
}
$url=”http://www.google.com";
$proxies=文件(“list.txt”);
foreach($代理作为$代理)
{
$ch=curl\u init($url);
curl_setopt($ch,CURLOPT_PROXY,$PROXY);
curl_setopt($ch,CURLOPT_HTTPPROXYTUNNEL,$proxy);
$page=curl\u exec($ch);
卷曲关闭($ch);
$check=stripos($page',);//不漂亮:)
如果($check>0)
{
echo$proxy.“有效!”;
}否则{
echo$proxy.“已经死了!”;
}
}
您可以尝试通过以下方式连接到代理:
$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;
}
你不能简单地检查一下
curl\u exec()
是否返回FALSE
,以及它是否尝试使用不同的代理吗?只需搜索一下:@EdoDodo:在一个不存在的页面上尝试了所有代理(包括工作代理)之后,你可能会得出结论,这个方法不起作用。我在执行脚本时遇到了问题。在“@fsockopen”上,无法访问整个主机。