Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Не отправляется POST запрос на Livejournal (https://forum.antichat.xyz/showthread.php?t=178289)

rainboww 12.02.2010 17:33

Редактирование профайла 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); 

?>

Помогите найти ошибку

groundhog 12.02.2010 17:41

А что в результате возвращается?

rainboww 12.02.2010 17:59

Возвращается страница редактирования профиля под моим логином и все! Ни сообщения об ошибке в заполнении формы, ни соотв сообщения об успехе - просто форма с полями. Но в жж эту страницу может видеть только уже авторизированный юзер, так што типа половину пути правильно прошли

Komyak 12.02.2010 20:40

Держи полностью готовая функция авторизации:
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] );
и т.д.
Странно, если это весь код, то как он у тебя вообще авторизуется? Там параметры для авторизации формируются ява скриптом в начале страницы(Я намучился когда писал цикл для "добавления друзей")

rainboww 13.02.2010 03:27

Спасибо, но зачем так сложно? Авторизироваться вполне можно и так:
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

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

Komyak 14.02.2010 12:22

Цитата:

Вопрос то в другом: как дальше пройти на страницу
Так тебе и дали готовую функцию. В дальнейшем там любое действие требует получения этих параметров. Меняй урлы в этой функции под свои нужды.
Это $lj_form_auth- нужно везде.
Я сначала тоже не мог ничего изменить...
Цитата:

Авторизироваться вполне можно и так:
Какой размер кода получится в итоге? Авторизация->Переход->Получение параметров->Отправка->....

rainboww 27.02.2010 16:36

Спасибо помогло

Jed7777 27.02.2010 16:58

В той функции тебе надо было подгружать куки с авторизации.
curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file);


Время: 14:08