Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2009, 15:31   #1
[koyot]
Пользователь
 
Аватар для [koyot]
 
Регистрация: 17.12.2008
Сообщений: 17
Печаль Авторизация vkontakte

нужен алгоритм авторизации не для проверки пароля а именно для получения страниц юзера тоесть я так понимаю нужны куки есть код:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  http:TidHttp;
  CooM:TidCookieManager;
  data:TStringList;
  page, id, name:String; 
begin
  http:=TIdHTTP.Create(Self);
  data :=TStringList.Create;
  CooM:=TidCookieManager.Create(http);
  http.AllowCookies:=true;
  http.CookieManager:=CooM;
  http.HandleRedirects:=true;



  data.Add('u=1');
  data.Add('success_url=');
  data.Add('fail_url=');
  data.Add('try_to_login=1');
  data.Add('email='+Edit1.Text);
  data.Add('pass='+Edit2.Text);
  Page:= http.Post('http://vkontakte.ru/login.php?', data);
  memo1.text:=page;
 data.Free;
  Coom.Free;
  http.Free;
  name:='';
  name:=copy(page,Pos('<h1> <b>Online</b>',page)+length('<h1> <b>Online</b>'),Pos('<span>',page)-(Pos('<h1> <b>Online</b>',page)+length('<h1> <b>Online</b>')));
  if Pos('<h1> <b>Online</b>',page)<>0 then Label4.Caption:='Name :: '+name;
  id:='';
  if Pos('<input type="hidden" id="mid" value="',page)<>0 then delete(page,1,Pos('<input type="hidden" id="mid" value="',page)-1);
  id:=copy(page,Pos('<input type="hidden" id="mid" value="',page)+length('<input type="hidden" id="mid" value="'),Pos('">',page)-(Pos('<input type="hidden" id="mid" value="',page)+length('<input type="hidden" id="mid" value="')));
  if Pos('<input type="hidden" id="mid" value="',page)<>0 then Label3.Caption:='ID :: '+id;

end;
нащел в инете должен определять имя пользователя тоесть получает искомую страницу..... люди говорят работает но скомпилить немогу ибо надо инди 10.2... а у меня инди 10.0.52 составил такойже код поновой скомпилилось но выдает пустую страницу в мемо

может кто подможет?

зы по форуму искал нашол только для проверки пароля
ICQ 897-45-46
[koyot] вне форума Ответить с цитированием
Старый 10.02.2009, 16:56   #2
Teen4jump
Пользователь
 
Аватар для Teen4jump
 
Регистрация: 19.06.2007
Сообщений: 88
По умолчанию

У тебя авторизация то проходит? У мня нет, такая же проблема, как и у тебя...

Последний раз редактировалось Teen4jump; 10.02.2009 в 17:08.
Teen4jump вне форума Ответить с цитированием
Старый 18.02.2009, 00:08   #3
Vitek-pm
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 56
По умолчанию

Я недавно написал авторизацию на vkontakte с использованием компонента HTTPCli от ICS. Вроде бы всё нормально работает, могу поделиться.
Сначала тоже пытался сделать с использованием компонентов от Indy - не получилось, наверное версия стара была.

Последний раз редактировалось Vitek-pm; 18.02.2009 в 11:26.
Vitek-pm вне форума Ответить с цитированием
Старый 20.02.2009, 12:02   #4
jone
Форумчанин
 
Аватар для jone
 
Регистрация: 27.09.2008
Сообщений: 152
По умолчанию

так делись!
jone вне форума Ответить с цитированием
Старый 20.02.2009, 13:39   #5
Vitek-pm
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 56
По умолчанию

Вот мой вариант, только не на Делфи, а на C++Builder 6, но думаю переделать не сложно.

Код:
void __fastcall TfMain::btEnterClick(TObject *Sender)
{
AnsiString post="email="+edEmail->Text+"&pass="+edPass->Text;
AnsiString href="http://vkontakte.ru/login.php";

TMemoryStream *DataIn=new TMemoryStream;
TMemoryStream *DataOut=new TMemoryStream;
bool ok=false;

try
  {
   DataOut->Write(post.c_str(), post.Length());
   DataOut->Seek(0,soFromBeginning);
   HTTP->SendStream=DataOut;
   HTTP->RcvdStream=DataIn;
   HTTP->URL=href;
   HTTP->Post();
   ok=true;
  }
catch(...){}

if (ok)
  {
   DataIn->SaveToFile("1.html");
  }

delete DataIn;
delete DataOut;
}

...

void __fastcall TfMain::HTTPCookie(TObject *Sender, const AnsiString Data,
      bool &Accept)
{
if (Data.Pos("remixsid")!=0)
  {
   AnsiString t=Data.SubString(Data.Pos("remixsid"),Data.Length()-Data.Pos("remixsid"));
   HTTP->Cookie=Data.SubString(0,t.Pos(";")-1);   //руками забиваем необходимые куки, а именно remixsid
  }
}
После авторизации можно уже спокойно ползать по сайту, посалать POSTом сообщения, и т. п.

Напоминаю, что данный кусок кода написан с использованием компонента HTTPCli из ICS. Вот здесь эти компоненты можно скачать: http://www.overbyte.be/frame_index.html. Попробуйте, кому интересно.
Vitek-pm вне форума Ответить с цитированием
Старый 26.03.2009, 08:26   #6
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Для авторизации и работы с этим сайтом вам необходимо обновить Indy до версии за 26.03.2009. Все ошибки с перехватом и передачей куков,которые и обуславливали эту проблему теперь решены. Авторизация проходит успешно.
Код:
procedure TForm21.btn1Click(Sender: TObject);
var ss:TStringList;
f:TFileStream;
begin
mmo1.Lines.Clear;
mmo2.Lines.Clear;
mmo3.Lines.Clear;
http1.Get('http://vkontakte.ru/index.php');
mmo2.lines.add('cookie1.CookieCollection.Count: '+inttostr(cookie1.CookieCollection.Count));
mmo3.Lines.Add(http1.Request.RawHeaders.Text);
mmo3.Lines.Add('');
mmo3.Lines.Add(http1.Response.RawHeaders.Text);
mmo3.Lines.Add('');
ss:=TStringList.Create;
f:=TFileStream.Create('c:\111.html',fmCreate);
try
 	ss.Add('email=programmers@mail.ru');
  ss.Add('pass=123456');
  ss.Add('expire=1');
  http1.Post('http://vkontakte.ru/login.php',ss,f);
  mmo3.Lines.Add(http1.Request.RawHeaders.Text);
	mmo3.Lines.Add('');
	mmo3.Lines.Add(http1.Response.RawHeaders.Text);
	mmo3.Lines.Add('');
finally
	ss.Free;
  f.Free;
  ShellExecute(Handle, nil,pchar('c:\111.html'), nil, nil, SW_SHOW);
end;
end;
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 24.04.2009, 23:47   #7
tigr1991
Пользователь
 
Регистрация: 14.01.2008
Сообщений: 34
По умолчанию

"обновить Indy до версии за 26.03.2009" - это indy10? или что-то другое? не могли бы вы пожалуйста дать прямую ссылку на эту версию indy?
tigr1991 вне форума Ответить с цитированием
Старый 25.04.2009, 22:54   #8
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
По умолчанию

Цитата:
Сообщение от tigr1991 Посмотреть сообщение
"обновить Indy до версии за 26.03.2009" - это indy10? или что-то другое? не могли бы вы пожалуйста дать прямую ссылку на эту версию indy?
http://kvendi.pp.ru/?p=66
Viteef вне форума Ответить с цитированием
Старый 06.08.2009, 16:11   #9
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

[Error] Unit1.pas(60): Undeclared identifier: 'ShellExecute'

Как исправить?
TwiX вне форума Ответить с цитированием
Старый 06.08.2009, 16:15   #10
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Код:
uses .....,shellapi;
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
idHTTP1.Get('http://www.vkontakte.ru') Xenofibrius Работа с сетью в Delphi 10 23.05.2009 00:14
Авторизация. Jjoker Общие вопросы C/C++ 4 28.01.2009 23:17
Авторизация AIst PHP 5 03.12.2008 20:57
Войти на сайт Vkontakte.ru tigr1991 Работа с сетью в Delphi 1 10.03.2008 15:47
Авторизация justas Работа с сетью в Delphi 0 21.12.2007 16:16