m.vkontakte.ru и кнопка продолжить

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by petryxa-mixa, 31 Dec 2010.

  1. petryxa-mixa

    petryxa-mixa Member

    Joined:
    8 Jun 2010
    Messages:
    174
    Likes Received:
    7
    Reputations:
    0
    Вообщем пытаюсь авторизоваться на м.вконтактире,авторизация происходит,но в мемо всегда появляется исходный текст страницы с кнопкой продолжить
    PHP:
    <html> <head> <meta http-equiv='content-type'
    content='text/html; charset=windows-1251' /> </head>
     <
    body onload="try {
     document.getElementById('l').submit(); } catch(e) { 
    document.getElementsByTagName('form')[0].submit();
     }"
    > <form id='l' method='post' 
    action='http://m.vkontakte.ru/login?op=slogin'> <input 
    type
    ='hidden' name='s' id='s' value=''> <input 
    type
    ='hidden' name='to' value='ZnJpZW5kcw--' /> 
    <
    noscript><input type="submit" value="Продолжить"/>
    </
    noscript> </form> </body> </html>

    как мне программно нажать эту кнопку?
    как обычно пробывал не выходит
    это из-за ява скрипта наверника

    вот исходник
    PHP:
    unit vhod_vk
    interface 
    uses 
    Windows
    MessagesSysUtilsVariantsClassesGraphicsControlsFormsDialogsStdCtrlsIdCookieManagerIdBaseComponentIdComponentIdTCPConnectionIdTCPClientIdHTTPIdMultipartFormData;
     
    type 
    TForm7 
    = class(TFormEdit1:TEdit
    Edit2TEdit;
     
    Button1TButton
    IdHTTP1TIdHTTP;
     
    IdCookieManager1TIdCookieManager
    ListBox1TListBox
    Memo1TMemo
    Memo2TMemo
    Memo3TMemo
    procedure Button1Click(SenderTObject);
     private { Private 
    declarations 
    public { Public 
    declarations 
    end
    var 
    Form7TForm7
    Http TidHttpCM TidCookieManager;
     
    Data :TStringList
    a,mail,pass,PervStra,sesiy,VtopStra Stringimplementation 
    {$R *.dfm
    procedure TForm7.Button1Click(SenderTObject); 
    begin mail :=Edit1.Text
    pass :=Edit2.Text
    try 
    Http := TIdHTTP.Create(Self); 
    Data := TStringList.Create
    CM := TidCookieManager.Create(Http); Http.AllowCookies := true
    Http.CookieManager := CM;
     
    Http.HandleRedirects := falseHttp.Request.Host:='login.vk.com'Http.Request.UserAgent:='Mozilla/5.0 (Windows; U;Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10';
     
    Http.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
     
    Http.Request.AcceptLanguage:='ru,en-us;q=0.7,en;q=0.3';
     
    Http.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7';
     
    Http.Request.Referer:='http://m.vkontakte.ru/login';
     
    Data.Add('value="Вход"'); 
    Data.Add('email='+mail); 
    Data.Add('pass='+pass); 
    PervStra := Http.Post('http://login.vk.com/?act=login&to=&from_host=m.vkontakte.ru&pda=1'Data); 
    finally 
    Data.Free
    CM.Free
    Http.Freeend
    if 
    Pos('http://m.vkontakte.ru/login',PervStra) <> 0 then begin listbox1.Items.Add('Успешный переход на 2у страницу!'); 
    Memo1.Text :=PervStrasesiy :=copy(PervStraPos('value'PervStra)+756); 
    memo2.Text :=sesiy
    try 
    Http := TIdHTTP.Create(Self); 
    Data := TStringList.Create
    CM := TidCookieManager.Create(Http); 
    Http.AllowCookies := true
    Http.CookieManager := CM
    Http.HandleRedirects := trueHttp.Request.Host:='m.vkontakte.ru'Http.Request.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10'Http.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'Http.Request.AcceptLanguage:='ru,en-us;q=0.7,en;q=0.3'Http.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7'Http.Request.Referer:='http://login.vk.com/?act=login&to=&from_host=m.vkontakte.ru&pda=1'Data.Add('value="Продолжить"'); 
    Data.Add('s='+sesiy); 
    Data.Add('op=slogin'); 
    Data.Add('redirect=1'); 
    Data.Add('expire=0'); 
    Data.Add('to=id1802851'); 
    Data.Add('to='); 
    VtopStra := Http.Post('http://m.vkontakte.ru/login'Data); 
    finally 
    Data.Free
    CM.Free
    Http.Free
    end
    if 
    Pos('Моя Страница',VtopStra) <> 0 then 
    begin 
    showMessage
    ('Успешно!'); 
    listbox1.Items.Add('Удачный переход на 3ю стр!'); 
    end 
    else 
    begin 
    showMessage
    ('цензура!');
     
    a:=IdHTTP1.Get('http://m.vkontakte.ru/friends');
     
    memo3.Text :=a
    end
    end 
    else 
    begin 
    Application
    .MessageBox('Возникла ошибка!Возможно пароль или логин не верен.','Ошибся друг!'mb_Ok);
     
    listbox1.Items.Add('Неудачный переход!'); 
    end
    end
    end.
    вообщем какие маны покурить по такой проблеме?
    первый раз на моём пути таковое
     
    #1 petryxa-mixa, 31 Dec 2010
    Last edited: 31 Dec 2010
  2. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    198
    Likes Received:
    12
    Reputations:
    1
    А в браузере работает без кнопки?
    Если да, юзай сниффер и смотри как ведет себя браузер, а как твоя программа.
    Я все никак не освобожусь и не помогу тебе :).
     
  3. petryxa-mixa

    petryxa-mixa Member

    Joined:
    8 Jun 2010
    Messages:
    174
    Likes Received:
    7
    Reputations:
    0
    в чморе от гугла кнопка не кажется эта
    а вот в мозиле она отображается и через некоторое время сама перекидывает на главную
    но можно конечно и нажать её
    Вообще интересна вся эта тема с ява скриптом на страницах,а вернее работа с ними в delphi так много где встречается
    хотят таким способом похоже обезапасить себя что ли))))или чего
    я бы не сказал что он удобен
    по крайне мере мне не нравится что то пока.... :D
     
  4. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    198
    Likes Received:
    12
    Reputations:
    1
    HandleRedirect у компонента idHTTP поставь в тру.
    Ява скрипт тебе не нужен.
    Когда ты в яве что-то делаешь, в итоге все равно на сервер отсылаются какие то данные. Твоя задача: смотреть что отсылается и повторять.


    Смотри для чего например нужен ява скрипт.
    Пользователь качает ява-калькулятор(к примеру), считает, а на сервер посылается только ответ(решение).
    Если это делать на хтмл, то вышло бы, что каждое нажатие пользователем кнопки посылало бы запрос, а это время.
    А так Java-Script программы выполняются в браузере, и потом уже обмениваются данными с сервером.

    P.S.
    Может я не правильно понял, но мне сдалось, что ты просто не уловил суть, поэтому и объяснил.

    P.S.1
    Иди ка ты мужик новый год встречать!
    Поздно уже.
    И хотя я сам не считаю это праздником, все же... Можешь например подумать, что ты сделал за прошедший год и что тебе нужно сделать в этом году.
    Удачи!)
     
    #4 Jakeroid, 1 Jan 2011
    Last edited by a moderator: 2 Jan 2011
  5. petryxa-mixa

    petryxa-mixa Member

    Joined:
    8 Jun 2010
    Messages:
    174
    Likes Received:
    7
    Reputations:
    0
    ну я это вкуриваю тоесть понимаю
    отправляю постом нужному скрипту и всё равно в мемо кажет туже страницу что до отправки
    idHTTP true пробывал тоже самое что false
     
  6. petryxa-mixa

    petryxa-mixa Member

    Joined:
    8 Jun 2010
    Messages:
    174
    Likes Received:
    7
    Reputations:
    0
    почти тужу страницу вернее....
     
  7. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    198
    Likes Received:
    12
    Reputations:
    1
    Что значит почти туже страницу?
     
  8. petryxa-mixa

    petryxa-mixa Member

    Joined:
    8 Jun 2010
    Messages:
    174
    Likes Received:
    7
    Reputations:
    0
    ну это значит то что:
    сверху в первом сообщение написан код страницы после попытки нажать эту кнопку,а до этого был вот этот код
    PHP:
    <html> <head> <meta http-equiv='content-type' 
    content='text/html; charset=windows-1251' /> </head
    <
    body onload="try { 
    document.getElementById('l').submit(); } catch(e) {
     document.getElementsByTagName('form')[0].submit(); 
    }"
    > <form id='l' method='post' 
    action='http://m.vkontakte.ru/login'> <input 
    type
    ='hidden' name='s' 
    value='1c2843d94b0b80604f45c3eda6a8b4964e7e68ea
    c5f4cb4ae611a4a6' 
    /> <input type='hidden' name='op'
     
    value='slogin' /> <input type='hidden' name='redirect'
     
    value='1' /> <input type='hidden' name='expire' 
    value='0' /> <input type='hidden' name='to' value='' />
    <
    input type='hidden' name='to' value='' /><input 
    type
    ='hidden' name='value' value='&quot;Р’С…РѕРґ&quot;' />
    <
    input type="submit" value="Продолжить"/> </form> </body> </html>
    все эти значения я как полагается вырезал и пытаюсь присвоив их переменным передать методом пост скрипту http://m.vkontakte.ru/login во втором этапе авторизации.
    но у меня ничего не выходит и я получаю страницу с первого поста
    что же не так прям распирает
     
    #8 petryxa-mixa, 1 Jan 2011
    Last edited: 1 Jan 2011
  9. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    198
    Likes Received:
    12
    Reputations:
    1
    Кароче, оставляй это дело. Я как доберусь, разберемся.
    ТАм прикол в том, что бы отправить полученные данные. Видишь, там есть name, а за ним сразу value.
    Это все отправить нужно серверу постом.

    Возможно я ошибаюсь, но кажется в первом твоем посте ты залогинился уже, осталось только перейти на свою страницу. Но я не ковырялся... Как то сейчас не хочется.
     
  10. petryxa-mixa

    petryxa-mixa Member

    Joined:
    8 Jun 2010
    Messages:
    174
    Likes Received:
    7
    Reputations:
    0
    в том то и дело что залогинелся мне кажется тоже тк учётка в онлайне повисает
     
  11. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    198
    Likes Received:
    12
    Reputations:
    1
    Ну так ты нажми на эту кнопку так же, как и на предыдущую.
    А потом попробуй к странице профиля обратиться.
    Посмотришь что вернет и узнаешь - залогинился или нет.
     
  12. petryxa-mixa

    petryxa-mixa Member

    Joined:
    8 Jun 2010
    Messages:
    174
    Likes Received:
    7
    Reputations:
    0
    пробывал
    просто значение переменной to присваивается в base64,а сам исходный код страницы тот же самый как и первом посте)))
     
  13. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    198
    Likes Received:
    12
    Reputations:
    1
    Разобрался с твоей проблемой!
    Там нужно спарсить полученные значения, и отправить их постом!
    Пиши в ЛС, если не понял.