Перейти к содержимому

Фото
- - - - -

Проверка прокси


  • Вы не можете создать новую тему
  • Please log in to reply
5 ответов в этой теме

#1 Alex5

Alex5
  • Пользователь
  • 42 сообщений

Отправлено 15 Ноябрь 2008 - 20:51

Делаю заказ. И мягко говоря я с ним справился на половину.
Но сделать надо. Сидим не знаем как сделать.
Нужно проверить прокси на работоспособность.
Вот что получилось пока что: (fsockopen() почему то не работает на сервере)
Решили сделать через cURL

 <?php

 function check_ip($url){
	$time_out = 12;
	$handle = curl_init($url);
	// return as a string.
	curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);
	// Prevents your page from hanging if the remote site is down.
	curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, $time_out);
	curl_setopt($handle, CURLOPT_FRESH_CONNECT, 1); // don't use a cached version of the url
	curl_setopt($handle, CURLOPT_HTTPPROXYTUNNEL,TRUE);
	//curl_setopt($handle, CURLOPT_PROXY, $url);
	curl_setopt($handle, CURLOPT_USERAGENT,"Mozilla/4.0");
	curl_setopt($handle, CURLOPT_MAXREDIRS,15);
	//curl_setopt($handle, CURLOPT_FOLLOWLOCATION,1);
	curl_setopt($handle, CURLOPT_HEADER,0);
	$info = array();
	$info[0] = curl_getinfo($handle,CURLINFO_CONNECT_TIME);
	$info[1] = curl_getinfo($handle, CURLINFO_TOTAL_TIME);
	$info[2] = curl_getinfo($handle, CURLINFO_SPEED_DOWNLOAD);

	$buffer = curl_exec($handle);
	if (curl_errno($handle)) {
		 echo curl_error($handle)."<br>";
	}
	else {
		curl_close($handle);
		if (empty($buffer)) {
			echo 'Unable to connect to '.$url.' <br>';
		} else {
			$buffer = preg_replace('/(?s)<meta http-equiv="Expires"[^>]*>/i', '', $buffer);
			if ($buffer === true) {
				echo 'Page has a redirect, please enter the URL of the final redirection <br>';
			} else {
			   print($buffer);
			   echo $info[0]." s(connect time)<br>".
				   $info[1]." s (total time) <br>".
				  $info[2]." (speed)<br>";

			   echo "Proxy is good <br>";
			}

		}
	}

 }



 if($_POST['submit_ip']){
 check_ip($_POST['ip']);
 }

  echo "<div class=box><br>
	<div align=left>
	<form name=test_ip method=post>
	IP: <input name=\"ip\" type=\"text\" value=\"\" size=15 maxlength=30>&nbsp;
	<input type=\"submit\" name=submit_ip value=\"Test\">
	</form></div>
 </div>";

?>
Очень благодарен буду за помощь.
Удачи
  • 0

#2 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 15 Ноябрь 2008 - 21:17

Alex5, ты хоть сам понял что делает функция check_ip? Код не имеет смысла...
  • 0

#3 ParadoxL

ParadoxL
  • Постоялец
  • 4 756 сообщений
  • Откуда:Edinburg

Отправлено 16 Ноябрь 2008 - 01:13

Может чем поможет

http://www.proxy-tool.net/updates/
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#4 Alex5

Alex5
  • Пользователь
  • 42 сообщений

Отправлено 16 Ноябрь 2008 - 09:56

Вообще то я смотрел этот скрипт.
Ок.. посмотрю ещё раз.
  • 0

#5 Alex5

Alex5
  • Пользователь
  • 42 сообщений

Отправлено 16 Ноябрь 2008 - 18:08

Вот вариант заказчика. Но этот вариант совсем не работает у меня.
Вечно выходит: couldn't connect to host.

<?php

 function check_ip($pr){
	$time_out = 12;
	$handle = curl_init('http://nes.planet.ee/check.php');
	curl_setopt($handle, CURLOPT_HTTPPROXYTUNNEL,TRUE);
	curl_setopt($handle, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
	curl_setopt($handle, CURLOPT_PROXY,$pr);
	curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, $time_out);
	curl_setopt($handle, CURLOPT_FRESH_CONNECT, 1);
	curl_setopt($handle, CURLOPT_USERAGENT,"Mozilla/4.0");
	curl_setopt($handle, CURLOPT_MAXREDIRS,15);
	curl_setopt($handle, CURLOPT_FOLLOWLOCATION,1);
	curl_setopt($handle, CURLOPT_HEADER,0);

	$buffer = curl_exec($handle);
	curl_close($handle);

 if ($buffer==""){print "Proxy is dead/ too slow<br>"; print ($buffer); }
 else
 {
 $strs = explode("\n",$buffer);
 print ($strs[0]);

 }


 }


 if($_POST['submit_ip']){
 check_ip($_POST['ip']);
 }

  echo "<div class=box><br>
	<div align=left>
	<form name=test_ip method=post>
	IP: <input name=\"ip\" type=\"text\" value=\"\" size=15 maxlength=30> 
	<input type=\"submit\" name=submit_ip value=\"Test\">
	</form></div>
 </div>";

?>


Сообщение изменено: Alex5 (16 Ноябрь 2008 - 18:10 )

  • 0

#6 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 16 Ноябрь 2008 - 21:43

Alex5, попробуй убрать

curl_setopt($handle, CURLOPT_HTTPPROXYTUNNEL,TRUE);
curl_setopt($handle, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
curl_setopt($handle, CURLOPT_MAXREDIRS,15);

Тут напиши (зачем тебе редиректы - их не будет!)
curl_setopt($handle, CURLOPT_FOLLOWLOCATION,0);

Далее обычно проверяют прокси методом POST, т.к. некоторые сети разрешают только GET + cookies тоже можно проверить.
  • 0