Вообщем пытаюсь авторизоваться на м.вконтактире,авторизация происходит,но в мемо всегда появляется исходный текст страницы с кнопкой продолжить 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, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdCookieManager, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, IdMultipartFormData; type TForm7 = class(TForm) Edit1:TEdit; Edit2: TEdit; Button1: TButton; IdHTTP1: TIdHTTP; IdCookieManager1: TIdCookieManager; ListBox1: TListBox; Memo1: TMemo; Memo2: TMemo; Memo3: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form7: TForm7; Http : TidHttp; CM : TidCookieManager; Data :TStringList; a,mail,pass,PervStra,sesiy,VtopStra : String; implementation {$R *.dfm} procedure TForm7.Button1Click(Sender: TObject); 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 := false; Http.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.Free; end; if Pos('http://m.vkontakte.ru/login',PervStra) <> 0 then begin listbox1.Items.Add('Успешный переход на 2у страницу!'); Memo1.Text :=PervStra; sesiy :=copy(PervStra, Pos('value', PervStra)+7, 56); memo2.Text :=sesiy; try Http := TIdHTTP.Create(Self); Data := TStringList.Create; CM := TidCookieManager.Create(Http); Http.AllowCookies := true; Http.CookieManager := CM; Http.HandleRedirects := true; Http.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. вообщем какие маны покурить по такой проблеме? первый раз на моём пути таковое
А в браузере работает без кнопки? Если да, юзай сниффер и смотри как ведет себя браузер, а как твоя программа. Я все никак не освобожусь и не помогу тебе .
в чморе от гугла кнопка не кажется эта а вот в мозиле она отображается и через некоторое время сама перекидывает на главную но можно конечно и нажать её Вообще интересна вся эта тема с ява скриптом на страницах,а вернее работа с ними в delphi так много где встречается хотят таким способом похоже обезапасить себя что ли))))или чего я бы не сказал что он удобен по крайне мере мне не нравится что то пока....
HandleRedirect у компонента idHTTP поставь в тру. Ява скрипт тебе не нужен. Когда ты в яве что-то делаешь, в итоге все равно на сервер отсылаются какие то данные. Твоя задача: смотреть что отсылается и повторять. Смотри для чего например нужен ява скрипт. Пользователь качает ява-калькулятор(к примеру), считает, а на сервер посылается только ответ(решение). Если это делать на хтмл, то вышло бы, что каждое нажатие пользователем кнопки посылало бы запрос, а это время. А так Java-Script программы выполняются в браузере, и потом уже обмениваются данными с сервером. P.S. Может я не правильно понял, но мне сдалось, что ты просто не уловил суть, поэтому и объяснил. P.S.1 Иди ка ты мужик новый год встречать! Поздно уже. И хотя я сам не считаю это праздником, все же... Можешь например подумать, что ты сделал за прошедший год и что тебе нужно сделать в этом году. Удачи!)
ну я это вкуриваю тоесть понимаю отправляю постом нужному скрипту и всё равно в мемо кажет туже страницу что до отправки idHTTP true пробывал тоже самое что false
ну это значит то что: сверху в первом сообщение написан код страницы после попытки нажать эту кнопку,а до этого был вот этот код 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='"Р’С…РѕРґ"' /> <input type="submit" value="Продолжить"/> </form> </body> </html> все эти значения я как полагается вырезал и пытаюсь присвоив их переменным передать методом пост скрипту http://m.vkontakte.ru/login во втором этапе авторизации. но у меня ничего не выходит и я получаю страницу с первого поста что же не так прям распирает
Кароче, оставляй это дело. Я как доберусь, разберемся. ТАм прикол в том, что бы отправить полученные данные. Видишь, там есть name, а за ним сразу value. Это все отправить нужно серверу постом. Возможно я ошибаюсь, но кажется в первом твоем посте ты залогинился уже, осталось только перейти на свою страницу. Но я не ковырялся... Как то сейчас не хочется.
Ну так ты нажми на эту кнопку так же, как и на предыдущую. А потом попробуй к странице профиля обратиться. Посмотришь что вернет и узнаешь - залогинился или нет.
пробывал просто значение переменной to присваивается в base64,а сам исходный код страницы тот же самый как и первом посте)))
Разобрался с твоей проблемой! Там нужно спарсить полученные значения, и отправить их постом! Пиши в ЛС, если не понял.