автоматическая активация учёткок

Тема в разделе "Как сделать...", создана пользователем Extalionez, 9 авг 2012.

  1. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    Нарыл интересный велосипедик. Правда не знаю - работает иль нет. В общем он автоматически активирует учётку через мыло. Более подробнее тут.
    PHP:
    <?php
        
    /*
            Несколько удобных функций для работы с активацией писем.
            Регаешь акки? Нужны мыла? Собрался продавать учебники и покупать авторег?
         
            Теперь можно обойтись и без этого!
     
            initializeMails($needle)
                - функция собирает валидные (в течении 10 минут) емайлы и помещает их в файл-дамп
                - как аргумент берет число - количество нужных емайлов
                - возвращает идентификатор этого файла (md5-подпись)
                 
            loadMails($session)
                - подгружает все емайлы по идентификатору в массив
             
            checkLetters($sessions)
                - функция возвращает массив, содержащий список писем (дату, тему письма, ссылку) в почтовом ящике
                - как аргумент принимает результат функции loadMails()
         
            checkContents($letters)
                - функция возвращает массив с содержимым писем
         
            Для более подробного ознакомления - советую использовать print_r() для каждой из функций.
            Пример создания новой сессии мейлов (1000 мейлов):
                $session = initializeMails(1000); // например вернет 7378e02b8fcb1bf8be6399b195fa4232
            Пример получения содержимого ящиков:
                $mailbox = checkLetters(loadMails('7378e02b8fcb1bf8be6399b195fa4232'));
            Пример получения содержимого писем:
                $letters = checkContents(checkLetters(loadMails('7378e02b8fcb1bf8be6399b195fa4232')));
             
            Обычно работает такая схема, что сперва создается сессия (то есть активируется какое-то количество емайлов),
            далее идет работа Вашего скрипта, используя полученные емайлы (например регистрация чего-либо).
            После этих действий следует активировать паузу в 5 минут, дабы дождаться дохода писем на наши ящики.
            После этого можно проверять ящики, по созданной сессии, получая их содержимое (и, например, активируя зарегистрированные аккаунты по ссылкам).
         
            2Q11
        */
     
        
    function ex($string$from$to)
        {
            
    $string explode($from$string2);
            
    $string explode($to$string[1], 2);
            return 
    $string[0];
        }
     
        function 
    initializeMails($needle)
        {
            
    // default header
            
    $head = array(
                
    'Host: 10minutemail.net',
                
    'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12',
                
    'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
                
    'Accept-Language: en-us,en;q=0.5',
                
    'Accept-Encoding: gzip,deflate',
                
    'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
                
    'Keep-Alive: 300',
                
    'Connection: keep-alive'
            
    );
         
            
    // vars initializing
            
    $curl_multi curl_multi_init();
            
    $threads = array();
            
    $results = array();
         
            
    // adding connections
            
    $i 0;
            for (
    $i 0$i $needle$i++)
            {
                
    $threads[$i] = curl_init();
             
                
    curl_setopt($threads[$i], CURLOPT_URL'http://10minutemail.net/en/');
                
    curl_setopt($threads[$i], CURLOPT_ENCODING'gzip,deflate');
                
    curl_setopt($threads[$i], CURLOPT_HTTPHEADER$head);
                
    curl_setopt($threads[$i], CURLOPT_HEADER1);
                
    curl_setopt($threads[$i], CURLOPT_RETURNTRANSFER1);
             
                
    curl_multi_add_handle($curl_multi$threads[$i]);
            }
         
            
    // executing connections
            
    $done null; do{curl_multi_exec($curl_multi$done);}while($done 0);
         
            
    // parsing sessions and emails
            
    $i 0$write_string '';
            for (
    $i 0$i $needle$i++)
            {
                
    $outer curl_multi_getcontent($threads[$i]);
             
                
    $phpsess    ex($outer'PHPSESSID='';');
                
    $email        ex($outer'<input type="text" id="fe_text" class="mailtext" value="''"');
             
                
    $write_string .= $phpsess.";".$email."\r\n";
                
    $results[] = array($phpsess$email);
            }
         
            
    // logging
            
    $session md5(implode('salt'$results[0]));
            
    $write fopen('./emails/'.$session.'.txt','a+');
            
    fputs($write$write_string);
            
    fclose($write);
         
            
    // closing connections and returning array [ PHPSESSID, EMAIL ]
            
    curl_multi_close($curl_multi);
            return 
    $session;
        }
     
        function 
    loadMails($session)
        {
            
    $emails file('./emails/'.$session.'.txt');
            
    $parsed = array();
            foreach (
    $emails as $email)
            {
                if (
    trim($email) != '')
                {
                    
    $email explode(';'$email);
                    
    $parsed[] = array(
                        
    'session'    => $email[0],
                        
    'email'        => $email[1]
                    );
                }
            }
            return 
    $parsed;
        }
     
        function 
    checkLetters($sessions)
        {     
            
    $curl_multi curl_multi_init();
            
    $threads = array();
            
    $results = array();
         
            
    $i 0;
            for (
    $i 0$i count($sessions); $i++)
            {
                
    $current_header = array(
                    
    'Host: 10minutemail.net',
                    
    'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12',
                    
    'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
                    
    'Accept-Language: en-us,en;q=0.5',
                    
    'Accept-Encoding: gzip,deflate',
                    
    'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
                    
    'Keep-Alive: 300',
                    
    'Connection: keep-alive',
                    
    'Cookie: PHPSESSID='.$sessions[0]['session'].'; '
                
    );
             
                
    $threads[$i] = curl_init();
             
                
    curl_setopt($threads[$i], CURLOPT_URL'http://10minutemail.net/en/mailbox_sql.ajax.php');
                
    curl_setopt($threads[$i], CURLOPT_ENCODING'gzip,deflate');
                
    curl_setopt($threads[$i], CURLOPT_HTTPHEADER$current_header);
                
    curl_setopt($threads[$i], CURLOPT_POST1);
                
    curl_setopt($threads[$i], CURLOPT_POSTFIELDS'xjxfun=GetMail&xjxr=1234567891234');
                
    curl_setopt($threads[$i], CURLOPT_RETURNTRANSFER1);
             
                
    curl_multi_add_handle($curl_multi$threads[$i]);
            }
         
            
    $done null; do{curl_multi_exec($curl_multi$done);}while($done 0);
         
            
    $i 0;
            for (
    $i 0$i count($sessions); $i++)
            {
                
    $email_list curl_multi_getcontent($threads[$i]);
                
    $email_list ex($email_list'<table id="maillist">''</table>');
                
    $letters explode('<tr>'$email_list); $letters_parsed = array();
                foreach (
    $letters as $k => $letter)
                {
                    if (
    $k >= 2)
                    {
                        
    $letter explode('</tr>'$letter);
                        
    $letter $letter[0];
                        
    $data explode('<td>'$letter); $letter_parsed = array();
                        foreach (
    $data as $j => $data_part)
                        {
                            if (
    $j != 0)
                            {
                                
    $data_part explode('</td>'$data_part);
                                
    $data_part html_entity_decode($data_part[0]);
                                
    $letter_parsed[] = $data_part;
                            }
                        }
                     
                        
    $subject strip_tags($letter_parsed[1]);
                        
    $message ex($letter_parsed[1], 'readmail.html?mid=''\'');
                     
                        
    $letters_parsed[] = array(
                            
    'id'        => $message,
                            
    'email'        => $sessions[$i]['email'],
                            
    'session'    => $sessions[$i]['session'],
                            
    'from'        => $letter_parsed[0],
                            
    'subject'    => $subject,
                            
    'date'        => $letter_parsed[2]
                        );
                    }
                }
                
    $results array_merge($results$letters_parsed);
            }
         
            
    curl_multi_close($curl_multi);
            return 
    $results;
        }
     
        function 
    checkContents($letters)
        {
            
    $curl_multi curl_multi_init();
            
    $threads = array();
            
    $results = array();
         
            
    $i 0;
            for (
    $i 0$i count($letters); $i++)
            {
                
    $current_header = array(
                    
    'Host: 10minutemail.net',
                    
    'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12',
                    
    'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
                    
    'Accept-Language: en-us,en;q=0.5',
                    
    'Accept-Encoding: gzip,deflate',
                    
    'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
                    
    'Keep-Alive: 300',
                    
    'Connection: keep-alive',
                    
    'Cookie: PHPSESSID='.$letters[$i]['session'].'; '
                
    );
             
                
    $threads[$i] = curl_init();
             
                
    curl_setopt($threads[$i], CURLOPT_URL'http://10minutemail.net/en/readmail.html?mid=' $letters[$i]['id']);
                
    curl_setopt($threads[$i], CURLOPT_ENCODING'gzip,deflate');
                
    curl_setopt($threads[$i], CURLOPT_HTTPHEADER$current_header);
                
    curl_setopt($threads[$i], CURLOPT_RETURNTRANSFER1);
             
                
    curl_multi_add_handle($curl_multi$threads[$i]);
            }
         
            
    $done null; do{curl_multi_exec($curl_multi$done);}while($done 0);
         
            
    $i 0;
            for (
    $i 0$i count($letters); $i++)
            {
                
    $message    curl_multi_getcontent($threads[$i]);
                
    $header    ex($message'<table id="message">''</table>');
             
                list(
    $from$to$subject$date) = explode('</tr><tr>'$header);
                
    $from        explode('</td><td>'$from);
                
    $from        explode('</td>'$from[1]);
                
    $from        html_entity_decode($from[0]);
                 
                
    $to        explode('</td><td>'$to);
                
    $to            explode('</td>'$to[1]);
                
    $to        html_entity_decode($to[0]);
             
                
    $subject    explode('</td><td>'$subject);
                
    $subject    explode('</td>'$subject[1]);
                
    $subject    html_entity_decode($subject[0]);
             
                
    $date        explode('</td><td>'$date);
                
    $date        explode('</td>'$date[1]);
                
    $date        html_entity_decode($date[0]);
             
                
    $message explode('<h2>Message</h2><div>'$message);
                
    $message explode('</div>'$message[1]);
                
    $message $message[0];
             
                
    $all = array(
                    
    'from'        => $from,
                    
    'to'        => $to,
                    
    'subject'    => $subject,
                    
    'date'        => $date,
                    
    'message'    => $message
                
    );
             
                
    $results[$letters[$i]['id']] = $all;
            }
         
            
    curl_multi_close($curl_multi);
            return 
    $results;
        }
    ?>