Показать сообщение отдельно

  #15  
Старый 21.12.2007, 14:44
MasterMushi
Новичок
Регистрация: 19.12.2007
Сообщений: 29
Провел на форуме:
35267

Репутация: 25
Talking

Кстати возвращаясь к проксям. берем db.php из предидущего архива. Ложим в один каталог с вот этим:

PHP код:
<?php  
// тут наши параметры доступа к базам данных
  
$host 'Сюда вписываем хост';
  
$user 'Тут юзер базы данных';  $password 'парольчег';
  
$database 'Имя базы';
  
$persistent false;
?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Проверщик живости проксей by Master Mushi</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body  bgcolor="#eeeeee">
<table width="751" border="0" cellpadding="5" >
  <tr>
      <td width="741" align="center" bgcolor="#000000"><font style="font-size: 36px; color: #FFFFFF;">Прокси живодерня</font> <font color="#eeeeff">v0.1</font></td>
  </tr>
  <tr> 
      <td bgcolor="#EDEFF1" height="400" align="left"  valign="top">
<br>Внимание входной формат в файле должен быть XXX.XXX.XXX.XXX:port<br>
<?
    error_reporting
(E_PARSE); //Каждый охотник желает знать где сидит глюк кроме WARNING MESSAGES
 
set_time_limit(0); // Вертимся скриптом до бесконечности, пока весь список не выйдет   
if (!empty($_GET['infile']))
{   
  
$inf=trim($_GET['infile']); //Если нам прислали файл со списагом то....
  
echo '<br>Новый список проксей: <b>'.$inf.'</b>';   
  echo 
'<br><br>Обновляем базу данных.';    
     echo 
'<br>Deleting old records...';
     require_once (
'db.php');  //   Запросим внешний файл с отработчиком БД
     
$db = new DB($host,$user,$password,$database);
     if (!
$db->open()) { die ($db->error());};
     
//Выполняем запрос на очистку старого списка         
     //-------Если нужно только обновить список то комментим отсюда-----
     
$sql_qwery="delete from proxies_t"//убиваем весь список нафиг или по вкусу тут можем просто обновить до новых.   
     
if (!$db->query($sql_qwery))
         { echo 
'<font color="#770000"><b>Failed</b></font><br>';
           die (
$db->error());
         };
     echo 
'<font color="#007700"><b>OK</b></font><br>' ;        
     
//-------И досюда--------------------------------------------------
     
echo '<br>Начинаю парсить файл...'
     @ 
$f1=fopen($inf,"r");
     
$counter=0;
     
$counteradd=0;
     
$counterskipp=0;
     while (!
feof($f1))
       { 
         
$counter++;
         
$s1=fgets($f1);  $s1=trim($s1);
         
$sql_qwery="select * from proxies_t where proxyurl='".$s1."'";    
         if (!
$db->query($sql_qwery))
             {
              echo 
'<font color="#770000"><b>Сдохли</b> на записи  '.$counter.'</font><br>';
              die (
$db->error());
             };
         
$matchcounter $db->numrows(); 

         if(
0==$matchcounter)
           {
             
$sql_qwery="insert into proxies_t (proxyurl) values ('".$s1."')";    
             if (!
$db->query($sql_qwery))
                         {echo 
'<font color="#770000"><b>Failed</b> at record  '.$counter.'</font><br>';
                          die (
$db->error());} else $counteradd++;  
           } else {
$counterskipp++;}
}
     echo 
'<font color="#007700"><b>Сделано</b></font><br> '.$counter.' записей просмотрено<br>';
     echo 
$counteradd.' записей введено в базу<br>';
     echo 
$counterskipp.' лагов пропущено<br>';
     
fclose($f1);
     echo
'Закончили упражнение с базой данных.<br>';
    } 
     else echo 
'<br><b><font color="#770000">Такого файла увы нет</font></b><br>';
     echo
'<br>Proxycheck started.<br>';
     
$dbw = new DB($host,$user,$password,$database); //Этот класс у нас будет обновлять рабочие прокся
        
if (!$dbw->open()) { die ($dbw->error());};
     
$sql_qwery="select * from proxies_t where  note <> 'good'"//только чистый выбор.   
     
if (!$db->query($sql_qwery)) // А это у нас будет запрос на выборку всех проксей
          
{echo '<font color="#770000"><b>Failed</b></font><br>'; die ($db->error());};
     while(
$row $db->fetchassoc())
        {
         if(
0!=strcmp('good'$row['note']))
           { 
// Мы пропускаем мимо все уже проверенные записи
              
$proxyarr=explode(":",$row['proxyurl']); //Разделяем проксю на порт и айпи
              
if ($socket  = @fsockopen($proxyarr[0], $proxyarr[1], $errno$errstr30)) 
               { 
fclose($socket);   
                 
//Если нужен отчет на экран то раскоменчиваем echo строчки по умолчанию система будет работать тихо как партизан
                 // echo '<font color="007700">Working</font> proxy <b>'.$proxyarr[0].'</b> port <b>'.$proxyarr[1].'</b><br>';
                 
                 //Если проkся оказался живеньким то дописываем GOOD в ноты к записи его IP
                 
$sql_str "update proxies_t set note = 'good' where id = {$row['id']}";
                 if (!
$dbw->query($sql_str)){ die ($dbw->error());}
                }   
            
//Завершили IF сработал сокет   
            //else echo '<font color="770000">Dead</font> proxy '.$proxyarr[0].' port '.$proxyarr[1].';
            //. Код ошибки <b>'.$errno.'</b>, '.$errstr.'.<br>';
           
}
        } 
// завершили fetchassoc

     
$dbw->freeresult(); //Закрываем класс который дописывает номы к записям о хороших проксях
     
$dbw->close();

      echo
'Проверка списка завершена.<br>';
      
      
/*  Если нужно то раскоментируйте вывод в файл.
      echo'<br>Выводим в файл  (aliveproxies.txt)<br> ';


      $ouf='aliveproxies.txt';
      @ $tf=fopen($ouf, "w");
      $sql_qwery="select * from proxies_t where note = 'good'";    
      if (!$db->query($sql_qwery)){echo '<font color="#770000"><b>Сдох запрос</b></font><br>'; die ($db->error());}
      
      while($row = $db->fetchassoc())
          { fputs($tf,$row['proxyurl']." \n"); };
      fclose($tf);
      
      */
      
      /* А это закоменчен вывод живых проксей прямо на экран
      $sql_qwery="select * from proxies_t where note = 'good'";    
      if (!$db->query($sql_qwery)){echo '<font color="#770000"><b>Сдох запрос</b></font><br>'; die ($db->error());}
      echo '<br>Список рабочих прокси серверов и хостов'ж
      while($row = $db->fetchassoc())
          { 
           echo '<br>';
          
           };
      
      */     
      
      
$db->freeresult();
      
$db->close();
      echo 
'Finished processing.<br><br>';


?>

<br> 
<form action="index.php" method="GET">    
<table border="0" bgcolor="#E0E8EB" cellpadding="0" cellspacing="1" width="100%"> 
    <tr align="center"><td width="150" bgcolor="#dfdfdf">Proxy list:</td>
    <td  width="90%" align="left" bgcolor="#dfdfdf"><input name="infile" type="text"  size="24" value="" style="width: 200px;"></td>
    </tr>
    <tr align="center"><td width="150" bgcolor="#dfdfdf"></td>
    <td  width="90%" align="left" bgcolor="#dfdfdf"><input name="oksubmit" type="submit" maxlength="250" size="24" value=" Start Check " style="width: 200px;"></td>
    </tr>    
</table>    
</form>      
      </td>
  </tr>
</table>
</body>
</html>
Прописываем данные на доступ к базе данных
И получаем сканер живых прокси серверов. Дешево и сердито. И можно тоже гонять кучами потоков с разных удаленных мест.
 
Ответить с цитированием