Логинимся на Mail.ru (HTTP POST)

Discussion in 'PHP' started by Ru}{eeZ, 26 Sep 2010.

  1. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    Почему не удаётся залогиниться? Сервер перенаправляет на страницу с ошибкой.

    PHP:
    <?php
    $fp 
    fsockopen("win.mail.ru"80$errno$errstr30);
    //проверяем успешность установки соединения
    if(!$fp) echo "$errstr($errno)<br>/>\n";
    else
    {
    //данные HTTP-запроса
    $data'Login='.urlencode("vsvsfb").'&Domain='.urlencode("mail.ru").'&Password='.urlencode("654321q")."\r\n\r\n";
    //Заголовок HTTP-запроса
    $headers="POST /cgi-bin/auth HTTP/1.1\r\n";
    $headers.= "Host: win.mail.ru\r\n";
    $headers.= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98)\r\n";
    $headers.= "Content-type: application/x-www-form-urlencoded\r\n";
    $headers.="Content-Length: ".strlen($data)."\r\n\r\n";
    //Отправляем HTTP-запрос серверу
    fwrite($fp$headers.$data);
    //Получаем ответ
    $line '';
    while(!
    feof($fp))
    {
    $line.=fgets($fp1024);
    }
    fclose($fp);
    }
    echo 
    "<pre>";
    echo 
    $line ;
    echo 
    "</pre>";
    ?>
    Ответ сервера:
    Code:
    HTTP/1.1 302 OK
    Server: nginx/0.7.62
    Date: Sun, 26 Sep 2010 15:53:57 GMT
    Transfer-Encoding: chunked
    Connection: close
    Location: http://win.mail.ru/cgi-bin/login?email=vsvsfb@mail.ru&fail=1
    Set-Cookie: mrcu=641D4C9F6C950BE6665F0100007F; expires=Wed, 23 Sep 2020 15:53:57 GMT; path=/; domain=.mail.ru
    X-Host: f267.mail.ru
    
    0
    
     
  2. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    PHP:
    <?php
        
    if($ch curl_init('https://auth.mail.ru/cgi-bin/auth'))
        {
            
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.5) Gecko/20091102 Firefox/3.9.0');   
            
    curl_setopt($chCURLOPT_HEADER1);
            
    curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
            
    curl_setopt($chCURLOPT_SSL_VERIFYHOST0);
            
    curl_setopt($chCURLOPT_REFERER'http://win.mail.ru');
            
    curl_setopt($chCURLOPT_ENCODING'gzip');
            
    curl_setopt($chCURLOPT_POST1);
            
    curl_setopt($chCURLOPT_POSTFIELDS'Login=vsvsfb&Domain=mail.ru&Password=654321q');
            
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
            
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
            
    curl_setopt($chCURLOPT_NOBODY0);
            
    $content curl_exec($ch);    
            echo 
    $content;
        }
     
    1 person likes this.
  3. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    Ты не указал Content-length
    $headers.= "Content-length: ".strlen($data)."\r\n";
    серверу надо знать сколько инфы ты ему передаёшь, сколько ему ждать
    curl это всё сам подсчитывает
     
  4. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    у меня же указано в запросе:
    PHP:
    $headers.="Content-Length: ".strlen($data)."\r\n\r\n";
    2 Isis:
    curl не хочется использовать
     
  5. roxblnfk

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

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    может это не решит проблему, но в конце не должно быть \r\n\r\n тут:

    //данные HTTP-запроса
    $data= 'Login='.urlencode("vsvsfb").'&Domain='.urlencode("mail.ru").'&Password='.urlencode("654321q")."\r\n\r\n";

    ps: я уже выкладывал функцию на сокетах для http запроса:
    /showthread.php?p=2156929#post2156929
    только там я считал длину Content-Legth из принципа
    "Длина тела объекта (entity-body) - это длина тела сообщения (message-body), полученного после декодирования всех кодирований передачи."
     
    #5 roxblnfk, 27 Sep 2010
    Last edited: 27 Sep 2010
    1 person likes this.
  6. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    слушай, решил проблему, спасибо большое!)
     
  7. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    Ну когда-нибудь ты поймешь почему curl лучше