Не отправляется POST запрос на Livejournal

Discussion in 'PHP' started by rainboww, 12 Feb 2010.

  1. rainboww

    rainboww New Member

    Joined:
    23 Oct 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Редактирование профайла Livejournal. Не отправляется POST - запрос

    Авторизация удается, но дальше при редактировании профиля форма не отсылается. Пробовал заполнять поля и строкой и массивом.

    PHP:
    <?php 

    $curl 
    curl_init();
    curl_setopt($curlCURLOPT_USERAGENT"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4");
    curl_setopt($curlCURLOPT_URL'http://www.livejournal.com/login.bml');
    curl_setopt($curlCURLOPT_POST1);
    curl_setopt($curlCURLOPT_POSTFIELDS'user=0captain_memo&password=201826');
    curl_setopt($curlCURLOPT_REFERER'http://www.livejournal.com');
    curl_setopt($curlCURLOPT_COOKIEJAR"./cook1");
    curl_setopt($curlCURLOPT_FOLLOWLOCATION1);
    curl_setopt($curlCURLOPT_RETURNTRANSFER1);
    $result  curl_exec($curl);


    $data = array('name' => '0captain_memo'
                         
    'gender' => 'M'
                          
    'month' => '6'
                          
    'day' => '02'
                          
    'year' => '1988'
                          
    'opt_sharebday' => 'A'
                          
    'opt_showbday' => 'D'
                          
    'opt_showschools' => 'F'
                          
    'interests' => 'music'
                          
    'bio' => ''
                           
    'url' => 'http://google.com'
                          
    'urlname' => 'google.com'
                          
    'opt_showlocation' => 'Y'
                          
    'Widget%5BLocation%5D_country' => 'RU'
                          
    'Widget%5BLocation%5D_statedrop' => '58'
                          
    'Widget%5BLocation%5D_stateother' => ''
                          
    'Widget%5BLocation%5D_city' => ''
                          
    'Widget%5BLocation%5D_minimal_display' => '0'
                          
    'allow_contactshow' => 'Y'
                          
    'opt_whatemailshow' => 'N'
                          
    'LJ__Setting__FindByEmail_opt_findbyemail' => 'H',
                          
    'LJ__Setting__UserMessaging_opt_usermsg' => 'Y'
                          
    'opt_showonlinestatus' => 'F'
                          
    'aolim' => ''
                          
    'icq' =>'' 
                           
    'yahoo' => ''
                           
    'msn' => ''
                           
    'jabber' => '' ,
                           
    'google_talk' => ''
                           
    'skype' => ''
                           
    'gizmo' =>'' 
                            
    'last_fm_user' => ''
                            
    'txtmsg_security' => 'N'
                            
    'txtmsg_provider' => ''
                            
    'txtmsg_number' => ''
                            
    'opt_hidefriendofs' => 'on',
                            
    'opt_disable_vgifts'  => 'none',
                            
    'lj_form_auth => '.$lj_form_auth[1]);


    $data2 'lj_form_auth='.$lj_form_auth[1].'&name=cap007&gender=M&month=6&day=02&year=1978&opt_sharebday=A&opt_showbday=D&opt_showschools=F&interests=music&bio=&url=http://google.com&urlname=google.com&opt_showlocation=Y&Widget%5BLocation%5D_country=RU&Widget%5BLocation%5D_statedrop=58&Widget%5BLocation%5D_stateother=&Widget%5BLocation%5D_city=&Widget%5BLocation%5D_minimal_display=0&allow_contactshow=Y&opt_whatemailshow=N&LJ__Setting__FindByEmail_opt_findbyemail=H&LJ__Setting__UserMessaging_opt_usermsg=Y&opt_showonlinestatus=F&aolim=&icq=&yahoo=&msn=&jabber=&google_talk=&skype=&gizmo=&last_fm_user=&txtmsg_security=N&txtmsg_provider=&txtmsg_number=&opt_hidefriendofs=on&opt_disable_vgifts=none';

    curl_setopt($curlCURLOPT_REFERER'http://www.livejournal.com/');
    curl_setopt($curlCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 
    curl_setopt($curlCURLOPT_POST1);
    curl_setopt($curlCURLOPT_POSTFIELDS$data);
    curl_setopt($curlCURLOPT_URL'http://www.livejournal.com/manage/profile'); 

    $resultcurl_exec($curl); 
    echo 
    $result
    curl_close ($curl); 

    ?>
    Помогите найти ошибку
     
    #1 rainboww, 12 Feb 2010
    Last edited: 27 Feb 2010
  2. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    А что в результате возвращается?
     
  3. rainboww

    rainboww New Member

    Joined:
    23 Oct 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Возвращается страница редактирования профиля под моим логином и все! Ни сообщения об ошибке в заполнении формы, ни соотв сообщения об успехе - просто форма с полями. Но в жж эту страницу может видеть только уже авторизированный юзер, так што типа половину пути правильно прошли
     
    #3 rainboww, 12 Feb 2010
    Last edited: 13 Feb 2010
  4. Komyak

    Komyak Banned

    Joined:
    14 Jan 2009
    Messages:
    202
    Likes Received:
    18
    Reputations:
    1
    Держи полностью готовая функция авторизации:
    PHP:
    function login$login$password )
    {
        
    $result post'http://www.livejournal.com/login.bml'null'http://www.livejournal.com/' );
        
    preg_match'#th" value="(.*?)"#i'$result$lj_form_auth );
        
    preg_match'#l\' value=\'(.*?)\'#i'$result$chal );
        
    $result post'http://www.livejournal.com/login.bml?ret=1''lj_form_auth=' urlencode$lj_form_auth[1] ) . '&chal=' urlencode$chal[1] ) . '&response=' MD5$chal[1] . MD5$password ) ) . '&user=' $login '&password=' $password '&remember_me=1&action%3Alogin=%D0%92%D1%85%D0%BE%D0%B4+%D0%B2+%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%83...''http://www.livejournal.com/login.bml' );
        
        if ( 
    preg_match'#logout(.*?)form#i'$result ) ) {
            return 
    true;
        } else {
            return 
    false;
        } 
    }
    1/ $post - пиши в строку;
    2/ urlencode( $lj_form_auth[1] );
    3/urlencode( $chal[1] );
    и т.д.
    Странно, если это весь код, то как он у тебя вообще авторизуется? Там параметры для авторизации формируются ява скриптом в начале страницы(Я намучился когда писал цикл для "добавления друзей")
     
    #4 Komyak, 12 Feb 2010
    Last edited: 12 Feb 2010
  5. rainboww

    rainboww New Member

    Joined:
    23 Oct 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Спасибо, но зачем так сложно? Авторизироваться вполне можно и так:
    PHP:
    <?php 

    $curl 
    curl_init();
    curl_setopt($curlCURLOPT_USERAGENT"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4");
    curl_setopt($curlCURLOPT_URL'http://www.livejournal.com/login.bml');
    curl_setopt($curlCURLOPT_POST1);
    curl_setopt($curlCURLOPT_POSTFIELDS'user=0captain_memo&password=201826');
    curl_setopt($curlCURLOPT_REFERER'http://www.livejournal.com');
    curl_setopt($curlCURLOPT_COOKIEJAR"./cook1");
    curl_setopt($curlCURLOPT_FOLLOWLOCATION1);
    curl_setopt($curlCURLOPT_RETURNTRANSFER1);

    $resultcurl_exec($curl); 
    echo 
    $result
    curl_close ($curl); 

    ?>
    Вопрос то в другом: как дальше пройти на страницу http://www.livejournal.com/manage/profile

    и отредактировать профиль ?
     
  6. Komyak

    Komyak Banned

    Joined:
    14 Jan 2009
    Messages:
    202
    Likes Received:
    18
    Reputations:
    1
    Так тебе и дали готовую функцию. В дальнейшем там любое действие требует получения этих параметров. Меняй урлы в этой функции под свои нужды.
    Это $lj_form_auth- нужно везде.
    Я сначала тоже не мог ничего изменить...
    Какой размер кода получится в итоге? Авторизация->Переход->Получение параметров->Отправка->....
     
  7. rainboww

    rainboww New Member

    Joined:
    23 Oct 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Спасибо помогло
     
  8. Jed7777

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

    Joined:
    16 Jun 2008
    Messages:
    0
    Likes Received:
    11
    Reputations:
    0
    В той функции тебе надо было подгружать куки с авторизации.
    curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file);