Нужен скрипт php proxy scanner HELP ME!

Discussion in 'PHP' started by mff, 8 Jul 2008.

  1. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
  2. iron-viper

    iron-viper Elder - Старейшина

    Joined:
    13 Nov 2007
    Messages:
    167
    Likes Received:
    45
    Reputations:
    3
    Это собственно так называемый чекер прокси.
    И он полностью работает вот подправил и немного добавил коментов что-бы тебе было понятно.

    PHP:

    <?php
    /* Переведено iron-viper for ANTICHAR.RU */

    $filename "filename.txt"//здесь пишем путь до файла в котором будут лежать прокси вида IP:port
    $rel=file_get_contents($filename); // "парсим" файл-лист с проксями указанный выше
    $ipset explode("\n",$rel); // делаем выборку(чтение) из того что выбрали
    foreach($ipset as $ips)
    {
    $ipandport=explode(':',$ips);
    //Так как в листе прокси вида 123.156.189.112:8080  то разбиваем значения(строки) на IP  и порты
    $host=$ipandport[0];                                      
    $i=(int)$ipandport[1];
    $fp = @fsockopen("tcp://".$host,$i,$errno,$errstr,10);      // открываем сокет и стукаем в адрес прокси по указанному порту

    if($fp)
    {
    echo(
    "Результат $fp
    "
    );
    echo (
    "port " $i " открыт по адресу" $host "<br>");
    fclose($fp);
    }
    flush();
    }

    ?>
    Инструкция:
    в файл "filename.txt" к примеру записываем прокси в виде:

    83.65.203.130:8080
    81.63.140.37:3128
    60.191.73.186:8080
    129.69.210.96:3124

    сохраняем и кидаем рядом со скриптом, далее запускаем скрипт и он сканит эти прокси.

    На сервере где запускаешь скрипт должна быть поддержка сокетов.

    Можно еще передописать скрипт чтобы он результаты сохранял и бла бла, но я ответил на твой вопрос думаю.
     
    #2 iron-viper, 8 Jul 2008
    Last edited: 8 Jul 2008
    1 person likes this.
  3. 5triker

    5triker Elder - Старейшина

    Joined:
    5 Apr 2007
    Messages:
    62
    Likes Received:
    41
    Reputations:
    1
    немного доделал чтоб сканил по диапазону
    нужно создать good.txt с chmod 777
    PHP:
    <form action="<?= $PHP_SELF?>" method="post">
    ОТ : <input type=text name=ot>
    ДО : <input type=text name=do>
    ПОРТ : <input type=text name=port size=2>
    Timeout : <input type=text name=timeout size=2 value="10"><br />
    Удалить из good.txt старые прокси <input type=checkbox name=del_old checked>
    <input type=submit name=submit value="check">
    </form>
    <?
    if ($_POST['ot']!="" && $_POST['do']!="" && $_POST['port']!="")
    {
    if ($_POST['del_old']=="on")
    {
    $fd=fopen("good.txt","w");
    @fputs($fd,"");
    fclose($fd);
    }
    $ot=$_POST['ot'];
    $do=$_POST['do'];
    $timeout=$_POST['timeout'];
    $port=$_POST['port'];
    preg_match("/([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})/",$ot,$ott);
    preg_match("/([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})/",$do,$doo);
    $i=0;
    while($i!=1)
    {
    if ($ott[4]>256){$ott[4]=0;$ott[3]++;}
    if ($ott[3]>256){$ott[3]=0;$ott[2]++;}
    if ($ott[2]>256){$ott[2]=0;$ott[1]++;}
    if ($ott[1]==$doo[1] && $ott[2]==$doo[2] && $ott[3]==$doo[3] && $ott[4]==$doo[4])
    {$i=1;}
    $host="$ott[1].$ott[2].$ott[3].$ott[4]";
    $fp = @fsockopen("tcp://".$host,$port,$errno,$errstr,$timeout);
    if($fp) 

    $ff=fopen("good.txt","a+");
    @fputs($ff,$host.":".$port."\r\n");
    fclose($fp);
    fclose($ff);

    flush();
    $ott[4]++;
    }
    if ($i==1)
    {
    echo "GOOD: <br />";
    require("good.txt");
    }
    }
    ?>
     
    #3 5triker, 8 Jul 2008
    Last edited: 8 Jul 2008
    1 person likes this.
  4. iron-viper

    iron-viper Elder - Старейшина

    Joined:
    13 Nov 2007
    Messages:
    167
    Likes Received:
    45
    Reputations:
    3
    И че он сканит? То есть понятно что задумка -диапазон, но ты порбывал сканить?

    Я два раза поюзал, првый он сказал что в диапазоне из 10 адресов на порт 80, открыты все. Чего быть не может.

    Во втором на диапазон 30 он вообще ничего не показал. Короче Бэд.
     
    #4 iron-viper, 8 Jul 2008
    Last edited: 8 Jul 2008
  5. 5triker

    5triker Elder - Старейшина

    Joined:
    5 Apr 2007
    Messages:
    62
    Likes Received:
    41
    Reputations:
    1
    проверил щас на 61.235.0.20 61.235.0.30 1080
    записало в файл правильно , но чет не вывело правдо в браузер

    upd: немного исправил вывод вроде норм выводит терь
     
    #5 5triker, 8 Jul 2008
    Last edited: 8 Jul 2008
  6. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    5triker, работает, но он только socks почему то ищет... :D
     
  7. GanjaKyp

    GanjaKyp Banned

    Joined:
    31 Jan 2009
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    а есть какое нибудь проф. решение этой задачи?? чтоб сканить именно по диапозону
     
  8. shellz[21h]

    shellz[21h] Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    311
    Likes Received:
    68
    Reputations:
    6
    PHP:
    <?php

      
    #check only socks5
      
      
    $ip_adress '127.0.0.1-127.0.0.254';  
      
    $ports = array('9050','1010');

      
      list(
    $ip_begin$ip_end) = explode('-'$ip_adress);
      for(
    $i ip2long($ip_begin); $i ip2long($ip_end); $i++) {
        foreach(
    $ports as $port)
            
    check_socks5(long2ip($i), $port);
      }
      
      function 
    check_socks5($socks_ip$socks_port
      {
        
    $socket fsockopen($socks_ip$socks_port);
        if(
    $socket) {
        
            
    $auth pack ('H*''050100'); // 05 - версия протокола, 01 - метод запроса (CONNECT), 00 - без аутентификации
            
    fwrite ($socket$auth);
            
    $read fread($socket2);
            if (
    bin2hex($read) == '0500') echo $socks_ip.':'.$socks_port.' - Good <br/>';
            else echo 
    $socks_ip.':'.$socks_port.' - Bad or Authorization Required <br/>';    
            
    fclose($socket);
                
        } else print 
    'Host down <br/>';
      }


    ?>