Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: помогите отсеять не валидные соксы (чекер на пхп)
 
 автор: adminn   (14.01.2008 в 01:20)   письмо автору
 
 

Помогите советом как чекать соксы и выводить только рабочие ip.
вывожу я так

<table border=0 bordercolor=#ffffff width=50%>
<tr bgcolor=#000000>
<td align=center><b><font>IP adddress</font></b></td>
</tr>

<?
   
for ($i 0$i mysql_num_rows($r); $i++)
   {
        
$time time() - mysql_result($r$i3);
        
$id mysql_result($r$i0);
        
$info mysql_result($r$i4);
        
$info str_replace(";""\\n"$info);

        if (
$time $bot_timeout)
        {
            
mysql_query("delete from stat where id='$id'");
            continue;
        }
        if (
$search_country)
        {
            if (!
is_integer(strpos(strtoupper(mysql_result($r$i2)), strtoupper($search_country))))
                 break;
        }
        echo 
"<tr bgcolor=#d9d9d9>"
             
."<td align=center>".mysql_result($r$i1)."</td>";            
   }
?>

</table>


получается список "адрес:порт" в таблице "IP adddress", ну тут все понятно.
Вот думаю как реализовать эту проверку и с помощью какого online сервиса это сделать.

   
 
 автор: Loneliness   (14.01.2008 в 01:37)   письмо автору
 
   для: adminn   (14.01.2008 в 01:20)
 

Может я что не так понял, но разве целесообразно проверять эти IP через он-лайн сервисы? Есть IP и порт, шли заголовки сокетами или CURLом и проверяй валидность ответа...

   
 
 автор: adminn   (14.01.2008 в 05:53)   письмо автору
 
   для: Loneliness   (14.01.2008 в 01:37)
 

что то за НАТ'ом остается, из всех 40% нормальных получается

   
 
 автор: adminn   (15.01.2008 в 01:59)   письмо автору
 
   для: adminn   (14.01.2008 в 05:53)
 

решил реализовать все через fsockopen()
вот:

$nosok = explode(":", mysql_result($r, $i, 1));      //разбил на адрес и порт
if(fsockopen($nosok[0], $nosok[1], $errno, 25) =!){  //проверяю
echo fsockopen(); //вывожу 

}

я косяк, да?) помогите разобраться.

   
 
 автор: Sobachka   (15.01.2008 в 17:56)   письмо автору
 
   для: adminn   (15.01.2008 в 01:59)
 

Поправьте если я не прав, но мне кажется что так:


<?php
$ip 
'127.0.0.1';
$port 8080;
$connlimite 25;
define('NL',"\r\n");

    
$fs fsockopen($ip,$port,$errno,$errstr,$connlimite);
      if(!
$fs)
    print 
'['.$errno.']'.$errstr.'<br/>';
      else
      {
          
fputs($fs,'GET http://softtime.ru/index.php HTTP/1.0'.NL.
        
'User-Agent: '.NL.
        
'Host: softtime.ru'.NL.
        
'Connection: Close'.NL.NL);

        
$answer='';
        while(!
feof($fs))$answer.=fgets($fs);
        print 
$answer.'<br/>';
        
fclose($fs);
        
        }

?>

   
 
 автор: adminn   (16.01.2008 в 02:59)   письмо автору
 
   для: Sobachka   (15.01.2008 в 17:56)
 

Sobachka спб все работает, подобные примеры я видел на сайтах.
раньше я выводил список так mysql_result($r, $i, 1) получалось сразу ip:port, теперь я разбил его для работы с fsockopen() так $nosok = explode(":", mysql_result($r, $i, 1));
получилось $nosok[0] - ip , $nosok[1] - port
мне нужно , чтоб также циклично выводился список проверенных прокси перед этим пройдя условия проверки через конструкции if ... не могу ни как это реализовать, прошу помогите.

   
 
 автор: Sobachka   (17.01.2008 в 01:27)   письмо автору
 
   для: adminn   (16.01.2008 в 02:59)
 

этот пример ты врядли мог где-то видеть...я написал его сам... в чём проблема то? встроить мой код в твой, если коннект не произведён,или ответ не получен то значит прокси не валидный...
я не привержинец давать прямые ответы... натолкнуть на мысль я могу с удовольствием, но за Вас решать Вашу задачу,писать полностью весь код - это не ко мне!

   
 
 автор: adminn   (17.01.2008 в 01:38)   письмо автору
 
   для: Sobachka   (17.01.2008 в 01:27)
 

Sobachka спасибо, буду читать , стараться.
По этим функциям я все понял, только вот не как не могу понять как мне выводить проверенные адреса в цикле( ну не как.. как получить переменную чекнутого ip, я только начинаю учить язык (по мере возможности).

   
 
 автор: Sobachka   (17.01.2008 в 01:54)   письмо автору
 
   для: adminn   (17.01.2008 в 01:38)
 


<?php

function check($ip,$port,$connlimite)
{

$nl="\r\n";
    
$fs fsockopen($ip,$port,$errno,$errstr,$connlimite); 
      if(!
$fs
    return 
FALSE;
      else 
      { 
          
fputs($fs,'GET http://softtime.ru/index.php HTTP/1.0'.$nl
        
'User-Agent: proxy_checker'.$nl
        
'Host: softtime.ru'.$nl
        
'Connection: Close'.$nl.$nl); 

        
$answer ''
        while(!
feof($fs))$answer.=fgets($fs); 
         
fclose($fs);
        if(
$answer<>'')return TRUE;
         
        }
}
$conlimt=25;
  for (
$i 0$i mysql_num_rows($r); $i++) 
   {
list(
$ip,$port) = explode(":"mysql_result($r$i1));
if(
check($ip,$port,$conlimt) == TRUE)print $ip.':'.$port.'<br/>';
}
?>



правда я реально не уверен что всё правильно, пусть меня поправить кто нить кто лучше знает работу с сокетами...
Но всё же постарайтесь понять что я написал,а не тупо скопировать!!!

   
 
 автор: adminn   (17.01.2008 в 13:09)   письмо автору
 
   для: Sobachka   (17.01.2008 в 01:54)
 

Спасибо. Мне самому очень интересно, буду тестировать.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования