Регер акков pochta.ru

Discussion in 'PHP' started by попугай, 27 May 2008.

  1. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196
    Привет всем...

    писал вот регер акков для почты.ру

    но возникла трабла... и не пойму в чем дело...

    каптча качается.. потом вводишь каптчу..
    пост запрос шлешь - и в ответ - неверно введена каптча...

    Заголовки смотрел в LiveHTTP Headers, все совпадает.. а почему то не пашет...

    Кто подскажет в чем трабла?

    Вот основная часть скрипта

    PHP:
    <?php
    $pass
    ="123123";/*пасс */



    /*Get запросы */
    function getzapros($host$path)
    {
    $res="";
    $sock=fsockopen($host80$errno$errstr30);
     if(!
    $sock){
          echo 
    $errstr($errno);
               }else{
        
    $headers "GET $path HTTP/1.1\r\n";
        
    $headers .="Host: $host\r\n";
        
    $headers .="User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\r\n";
        
    $headers .="Accept-Language: ru,ru-RU;q=0.9,en;q=0.8\r\n";
        
    $headers .="Connection: Close\r\n\r\n";
                    }
    fwrite($sock$headers);
             while(!
    feof($sock)){
         
    $res .=fgets($sock1024);
                                }
    fclose($sock);
    return 
    $res;



    /* POST запрос */

    function postzapros($host$script$cont){
    $respons="";
    $postsock=fsockopen($host80$errno$errstr30);
    if(!
    $postsock){
    echo 
    $errstr($errno);
    }else{
    $head ="POST $script HTTP/1.1\r\n";
    $head .="Host: $host\r\n";
    $head .="User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\r\n";
    $head .="Accept-Language: ru,ru-RU;q=0.9,en;q=0.8\r\n";
    $head .="Connecion: Close\r\n";
    $head .="Referer: http://www.pochta.ru/register/?$id\r\n";
    $head .="Content-Type: application/x-www-form-urlencoded\r\n";
    $head .="Content-Length: ".strlen($cont)."\r\n";
    $head .="\r\n$cont\r\n";
    }
    fwrite($postsock$head);
    while(!
    feof($postsock)){
    $respons .=fgets($postsock1024);
    }
    fclose($postsock);
    return 
    $respons;
    }

    $host="www.pochta.ru";
    $path="/register/";


    $get=getzapros($host$path); //запрашиваем страницу реги 

    preg_match("%Location: (/register/\S+)%i"$get$math); //выдираем заголовок Location
     
    $id=substr($math[1], 11); // Id шник 
    echo $id;




    $post=getzapros($host$math[1]);//запрашиваем страницу из заголовка Location 


    //echo $post;
    //preg_match("/register\/show_captcha\/\?id=[0-9a-z]{32}&captcha_id=[0-9a-z]{22,}/", $post, $captha);


    preg_match("/captcha_id=[0-9a-z]{22,}/"$post$capthaid);// Id  Каптчи 
    $caphaid=$capthaid[0];
    echo <<<EOG
    <a href="http://localhost/mypo4tareger.php"> на главную</a><br>
    <form action="mypo4tareger.php" method="post">
    <img src="http://www.pochta.ru/register/show_captcha/?
    $id&$caphaid"> 
    <input type="text" name="capha">
    <input type="submit" name="click">
    </form>
    EOG;
    if(
    $_POST['click']){
    $cont="$id&from_promo=0&rid=&lng=ru&newmail=&second_name=&first_name=&sure_name=&reg_login=eblan2008&domain=pochta.ru&alt_captcha_id=&alt_captcha=&domain_pass=&pass1=$pass&pass2=$pass&$caphaid&rnd_img_str={$_POST['capha']}&bth_additional=&bth_finish=1";
    echo 
    $cont."<br>";
    echo 
    $caphaid;
    echo 
    postzapros("www.pochta.ru""/register/submit/"$cont);
    }

    ?>

     

     
    #1 попугай, 27 May 2008
    Last edited: 27 May 2008
  2. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Я думаю, что надо скачивать капчу на хост, а от туда уже читать её, потому что у твоего компа и у сервака, который шлёт запрос, разные сессии.
     
  3. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196
    дык скрипт то один... я просто тестил на своем компе на локалхосте...


    Пробовал на хостинге -такая же ошибка...