Реклама на hackersoft.ru Реклама на hackersoft.ru

Вернуться   Форумы Hackersoft > Download > Made in Hackersoft.ru
CHAT Справка Пользователи Доска почета Календарь Поиск Сообщения за день Все разделы прочитаны

Made in Hackersoft.ru Программы, скрипты, софт, созданные участниками форума

Ответ
 
Опции темы
Старый 27.08.2010, 04:53   #1
glts
newbie 
 
Аватар для glts
 
Регистрация: 24.07.2010
Сообщений: 23
Вес репутации: 1 glts новичек
Депозит: 0$
Вы сказали Спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
Все привет, собственно была нужда в свое время и был создан чекер соксов..
Собственно вуаля:

Многопоточный, ну ладно, многолинейный с неблокирующимися сокетами (кол-во одновременно обрабатываемых соксов задается) автоматический чекер соксов (работает в цикле), настройки в шапке, читайте коменты. Загрузка соксов на чек с урл (раскоментить функцию) или локально. Работает при закрытом браузере, чекнутые соксы 100% работают

PHP код:
<?
    
if (function_exists('xdebug_start_trace')){
        
xdebug_start_trace('/var/www/debug/trace/fac.xt');
    }

    
/*
        CONFIG
    */

    
$stop_file "stop.me";        //!!! Имя файла, создав который сприпт выйдет из бесконечного цикла
    
$looped true;                //!!! Крутится в цикле
    
$loop_pause 15 60;        //!!! Время паузы между чеками

    //$socksurl = "http://site.com/text.txt";
    
$socksurl "list.txt";            //!!! Урл или имя файла, откуба брать соксы
    
$goodfile "goods.txt";    //!!! Имя файла, куда складывать живые соксы (chmod 666)

    
$connect_timeout 15;        //!!! Время на коннект 
    
$timeout 15;                //!!! Время на задержки в передаче информации

    
$count_at_time 500;        //!!! Количество одновременно обрабатываемых соксов

    
set_time_limit(0);            //!!! Бесконечное время на выполнение скрипта
    
ob_implicit_flush();        //!!! Моментельный вывод в 
    
ignore_user_abort(true);    //!!! Не реагировать на закрытие браузера

    /*
        END CONFIG
    */

    
    
function hex2bin($dump)
    {
        
$dump=str_replace(' '''$dump); 
        
$res='';
        
$len strlen($dump);
        for (
$i 0$i <= $len$i += 2)
        {
            
$bt=$dump[$i].$dump[$i+1];
            
$res=$res.chr(hexdec($bt)); 
        }
        return 
$res;
    } 

    function 
hex($dump)
    {
        
$res='';
        
$len strlen($dump);
        for(
$i=0$i $len$i++)
        {
            if( 
$i+== $len){
                
$res $res.dechex(ord($dump[$i]));
            } else {
                
$res $res.dechex(ord($dump[$i])) . " ";
            }
        }
      return 
$res;
    } 


    function 
len_test($dump)
    {
       if(
strlen($dump)==1) {$dump="0".$dump;}
       return 
$dump;
    } 


    function 
file_put($name$cont$flags 0){
        
$mode "w";
        if (
$mode == FILE_APPEND){
            
$mode "a";
        }
        
$mode .= "b";

        
$f fopen($name$mode);
        if (
$f){
            
fwrite($f$cont);
            
fclose($f);
        }
    }

    class 
client{
        public 
$need_write;
        public 
$need_read;
        public 
$connected;
        public 
$begin_ct;
        public 
$fp;
        public 
$done;

        function 
__construct($url$proxy$connection_timeout 15$timeout 15){
            
$this->client  = array ();
            
$this->need_read false;
            
$this->need_write true;
            
$this->wr_step 0;
            
$this->rd_step 0;
            
$this->proxy $proxy;
            
$this->connected false;
            
$this->begin_t time();
            
$this->begin_ct time();
            
$this->url $url;

            list (
$host$port) = explode(":"$proxy );

            
$transport='tcp';
            
$remote $transport.'://'.$host.':'.$port;

            
$this->fp  stream_socket_client($remote$err$errstr$connection_timeoutSTREAM_CLIENT_ASYNC_CONNECT STREAM_CLIENT_CONNECT);

            if (!
$this->fp) {
                
//trigger_error('httpPost error: '.$errstr);
                
$this->done "failed";
                return 
NULL;
            }

            
stream_set_blocking($this->fp0);
            
stream_set_timeout($this->fp$timeout);
            
$this->done "active";
        }

        function 
close(){
            
fclose($this->fp);
        }

        function 
onwrite(){
            
$this->begin_t time();
            switch (
$this->wr_step){
                case 
0:{
                    
$h=hex2bin('05 01 00');
                    
fputs($this->fp$h);
                    
$this->wr_step ++;
                    
$this->need_read true;
                    
$this->need_write false;
                    break;
                }
                case 
1:{
                    list(
$connect_host$connect_port) = explode(':'$this->url);

                    
$len=dechex(strlen($connect_host)); 
                    
$len=len_test($len);
                    
$h=hex2bin("05 01 00 03 $len ".hex($connect_host)." 00 ".dechex($connect_port).""); 

                    
fputs($this->fp$h);
                    
$this->wr_step ++;
                    
$this->need_read true;
                    
$this->need_write false;
                    break;
                }
                case 
2:{
                    
$head  "GET / HTTP/1.0\r\n";
                    
$head .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.52\r\n";
                    
$head .= "Host: $connect_host\r\n";
                    
$head .= "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n";
                    
$head .= "Accept-Language: ru,en;q=0.9\r\n";
                    
$head .= "Accept-Charset: windows-1252, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1\r\n";
                    
$head .= "\r\n";

                    
fputs($this->fp$head);
                    
$this->wr_step ++;
                    
$this->need_read true;
                    
$this->need_write false;
                    break;
                }
                default:{
                    
$this->need_write false;
                }
            }
            
$result = array($this->need_write$this->need_read);
            return 
$result;
        }

        function 
onread(){
            
$this->begin_t time();
            switch (
$this->rd_step){
                case 
0:{
                    
$this->connected true;
                    
//$h=hex2bin('05 01 00');
                    //while(!feof($fp)) { 
                    
$res fread($this->fp1024); 
                    
                    
//}
                    
$list=bin2hex($res);
                    
//var_dump($list);
                    
$this->rd_step++;
                    
//if (feof($this->fp)){
                    //    $this->need_read = true;
                    //} else { 
                    
$this->need_read false;
                    
//}
                    
                    
$this->need_write true;
                    
$res '';
                    
                    break;
                }
                case 
1:{

                    
//while(!feof($fp)) { 
                    
$res .= fread($this->fp1024); 
                    
//}
                    
$list=bin2hex($res);
                    
//var_dump($list);
                    
if ($list[3] == '0'){
                        
$this->rd_step++;
                        
$this->need_read false;
                        
$this->need_write true;
                    } else {
                        
$this->need_read false;
                        
$this->need_write false;
                        
$this->rd_step++;
                        
$this->done $list;
                        
//echo "error\n";
                    
}
                    
$res '';
                    
                    break;
                    
                } 
                case 
2:{
                    
$res fread($this->fp1024); 
                    
                    if (!
feof($this->fp)){
                        
$this->need_read true;
                    } else { 
                        
$this->need_read false;
                        
$this->rd_step++;
                    }
                    
//echo $res;
                    
break;
                }
                default:{
                    
$this->need_read false;
                }
            }
            
            
$result = array($this->need_write$this->need_read);
            return 
$result;
        }
    }

    function 
httpPost($proxies$connection_timeout 15$timeout 15) {
        
$url 'www.google.com:80';

        
$clients = array();

        foreach(
$proxies as $proxy){
            
$clients [] = new client($url$proxy$connection_timeout$timeout);
        }
    
        for(;;){
            
$read = array();
            
$write = array();
            
$except NULL;
            
$not_done false;

            foreach(
$clients as $cl){
                if (
$cl->done != 'active') continue;

                
$tm time(); 
                if (
$tm $cl->begin_ct >= $connection_timeout && !$cl->connected){
                    
$cl->done "connection_timeout";
                    
//break;
                
}
                if (
$tm $cl->begin_t >= $timeout && $cl->connected ){
                    
$cl->done "timeout";
                }
                
$cl_done false;
                if (
$cl->need_read ){
                    
$read[] = $cl->fp;
                } 
                if (
$cl->need_write) {
                    
$write[] = $cl->fp;
                }
                
$cl_done = !($cl->need_write || $cl->need_read);
                if (
$cl_done) {
                    
$cl->done "success";
                }
                
$not_done $not_done || !$cl_done;
            }

            if (!
$not_done) {
                break;
            }
                
            if (
false === ($num_changed_streams stream_select($read$write$except1))) {
                
/* Error handling */
            
} elseif ($num_changed_streams 0) {

                foreach(
$clients as $cl){
                    if (
in_array($cl->fp$read) && $cl->need_read ){
                        
$cl->onread();
                    }
                    if (
in_array($cl->fp$write) && $cl->need_write){
                        
$cl->onwrite();
                    }
                }
            }
            
        }

        foreach(
$clients as $cl){
            
//echo $cl->proxy . " - ". $cl->done . "<br>\n";
            
if ($cl->done == 'success'){
                
file_put_contents("goods.txt"$cl->proxy "\n"FILE_APPEND);
            }
            
$cl->close();
        }
        unset(
$clients);
        return 
0;
    }

    function 
get_proxies ($url){

        
$raw file($url);
        
$proxies = array();
        foreach(
$raw as $proxy){
            
$proxy str_replace("<br>"""trim($proxy));
            
$proxies [] = $proxy;
        }
        unset(
$raw);
        return 
$proxies;
    }

    do {
        
$start time();

        
file_put_contents($goodfile"");

        
$proxies get_proxies($socksurl);
        
$chunked_proxies array_chunk ($proxies$count_at_time);
        foreach(
$chunked_proxies as $chunk){
            echo 
'next chunk...'"<br>\n";
            
httpPost($chunk$connect_timeout$timeout);
        }
        
$end time();
        echo 
'check done!'$start:$end <br>\n";
        if (
$looped ){
            
sleep($loop_pause);
        } else {
            break;
        }
    } while(!
file_exists($stop_file));

    if (
function_exists('xdebug_start_trace')){
        
xdebug_stop_trace();
    }
?>
Если нужно брать соксы на чек из мускула, ставьте УРЛ на этот скрипт (должен лежать на сервере с sql):

PHP код:
<?

include("access.php");

    
mysql_connect($dbhost$dbuser$dbpass);
    
mysql_select_db($dbname);
$result mysql_query("SELECT `http`,  `socks`, `ipaddr`     FROM `bots`");     // Названия таблиц с нужными параметрами

    
while ($row mysql_fetch_array($resultMYSQL_ASSOC)) {
      echo 
$row['ipaddr'] . ":" $row['socks'] . "<br>\n";     // Формат построения списка и разделитель
}

?>
Рядом должен быть файл с данными ДБ (access.php) в след формате:

PHP код:
<?php

# database
    
$dbhost "localhost";
    
$dbname "Your_Db_Name";
    
$dbuser "DB_User";
    
$dbpass "DB_Password";
?>
добавлено через 19 часов 37 минут
Если кому нужно будет еще... Джоинер списков с разных урлов в один

Код:
<?

//настройки
        set_time_limit(0);
        $urlfile = "urls.txt";  // файл со списком урл в столбик
        $refresh_time = 5; //1 minute
        $path_to_save = "";
        $namepat = "list.txt"; // результат работы chmod777
        $wait_time = $refresh_time * 60 * 1000;
        /*
        $f = fopen("paths.txt", "wt");
        for($i = 1; $i <= 0xFFFF; $i++)
                fputs($f, "as:" . $i . "\n");           
        fclose($f);
        die();
        */
?>

<script>
function refresh(){
        document.location = '' + document.location;
}
setTimeout("refresh();", <?php echo $wait_time?>);
</script>


<?
        $urls = file($urlfile);
        unlink($path_to_save . $namepat);
        foreach($urls as $url){
                $cont = file_get_contents(trim($url)) . "\n";
                file_put_contents($path_to_save . $namepat, $cont, FILE_APPEND);
                
        }

?>

Последний раз редактировалось glts, 28.08.2010 в 00:31. Причина: Добавлено сообщение
glts вне форума   Ответить с цитированием
Благодарности glts от:
Старый 11.08.2011, 20:35   #2
ducat
newbie 
 
Регистрация: 11.08.2011
Сообщений: 6
Вес репутации: 0 ducat новичек
Депозит: 0$
Вы сказали Спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Целый сервис можно сделать на базе скриптов этих. Спасибо!
ducat вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 03:30.


© 2005 — +∞ Hackersoft. Все и вся защищены.
Публичная оферта | Правила форума | Реклама на сайте
Powered by vBulletin®©™ Jelsoft®©™ Enterprises Ltd. Перевод: zCarot.
Реклама на hackersoft.ru Реклама на hackersoft.ru