Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.79/38: Рейтинг темы: голосов - 38, средняя оценка - 4.79
VtaMC
Просто Веталь
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
1

Авторизация на сайте

25.06.2009, 17:47. Просмотров 7041. Ответов 14
Метки нет (Все метки)

Доброго времени суток!
Не могу авторизироваться на vkontakte.ru, через indy получаю HTML.

C++
1
2
3
4
5
6
String list;
TStringList *s = new TStringList;
  s->Add("email=mail@example.com");
  s->Add("pass=***");
list = IdHTTP1->Post("http://vkontakte.ru/login.php", s);
Memo1->Text = list;

Но код не работает... Выходит пустое поле ввода... Как реализовать авторизацию?
1
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2009, 17:47
Ответы с готовыми решениями:

Авторизация на сайте
Доброго времени суток. Не пинайте, ибо я новичок. Не могу авторизироваться на сайт...

Авторизация на сайте
String PageProfile; IdHTTP1->AllowCookies=true; IdHTTP1->HandleRedirects=true; AnsiString a,...

Borland c++ 6 авторизация на сайте
Здравствуйте, знаю на сайте много про это написано, на решения данной задачи на borland c++ 6 я не...

Авторизация на сайте steam
Пытаюсь авторизироваться в Steam`е но всё не удачно. У них ещё авторизация проходит через 3 POST...

Авторизация на сайте amazon.com
Пытаюсь авторизоваться на сайте amazon.com, но в параметрах Post есть некая metadata1 не могу...

14
D@rkD@iver
112 / 112 / 13
Регистрация: 01.10.2008
Сообщений: 876
28.07.2009, 09:03 2
C++
1
2
3
4
AnsiString g;
g= "op=a_login_attempt&email=ivanov%40mail.ru&pass=ivan&expire";
NMHTTP1->Get("http://vkontakte.ru/login.php?"+g);
Memo1->Lines->Add(NMHTTP1->Body);
djn
1
VtaMC
Просто Веталь
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
29.07.2009, 22:41  [ТС] 3
Работает, а как дальше работать с залогиниными страницами, просто потом я получаю код последующих страниц, вцыдаёт страницу логина.
0
D@rkD@iver
112 / 112 / 13
Регистрация: 01.10.2008
Сообщений: 876
31.07.2009, 12:55 4
А что тебе конкретно нужно?
0
31.07.2009, 12:55
VtaMC
Просто Веталь
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
31.07.2009, 13:24  [ТС] 5
Мне нужно получить страницу сообщений
0
D@rkD@iver
112 / 112 / 13
Регистрация: 01.10.2008
Сообщений: 876
31.07.2009, 16:27 6
когда ты авторизуешься сервер возвращает тебе твой id
получить его можно таким образом
C++
1
Memo1->Lines->Add(NMHTTP1->Body)
(после вызова метода NMHTTP1->GET(URL))

в Memo1 у тебя появится good11111111 (естественно с твоим номером)
адрес главной страницы http://vkontakte.ru/id11111111, ты можешь получить страницу методом Get. В полученом HTML коде можешь найти ссылки и бегать по ним
0
VtaMC
Просто Веталь
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
31.07.2009, 16:56  [ТС] 7
Вот я её методом get и получаю, но он мне выдал код страницы авторизации.

C++
1
2
3
4
AnsiString g;
g= "op=a_login_attempt&email=vtamc%40mail.ru&pass=password&expire";
IdHTTP1->Get("http://vkontakte.ru/login.php?" + g);
Memo1->Lines->Text = IdHTTP1->Get("http://vkontakte.ru/mail.php?id=11111111&44271");
0
D@rkD@iver
112 / 112 / 13
Регистрация: 01.10.2008
Сообщений: 876
31.07.2009, 17:07 8
VtaMC, наверное дело в cookie, я точно не знаю, но кажется vkontakte требут куки
0
VtaMC
Просто Веталь
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
31.07.2009, 17:52  [ТС] 9
я cookiemanager подключил
0
ZVolodumur
49 / 49 / 4
Регистрация: 21.05.2009
Сообщений: 156
09.08.2009, 06:10 10
Лучший ответ Сообщение было отмечено как решение

Решение

Куки надо отлавливать в ручную по причине что CookieManager принимает куки вида Set-Cookie:ID=11111; path=/
А Вконтакте они вида Set-Cookie:remixmid=5704894; expires=Mon, 12-Apr-2010 11:43:08 GMT; path=/; domain=.vkontakte.ru, и CookieManager их принять не может...

Вот рабочий чпособ авторизации на сайте Вконтакте через indy10:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void SetCookies()
{
TStringList *Temp=new TStringList();
Form1->IdHTTP1->Response->RawHeaders->Extract("Set-cookie", Temp);
for (int i = 0; i < Temp->Count; i++)
 {
 Temp->Strings[i]=Temp->Strings[i].SubString(0, AnsiPos(";",Temp->Strings[i])-1)+"; path=/";
 Form1->IdHTTP1->CookieManager->AddCookie(Temp->Strings[i], Form1->IdHTTP1->Request->Host);
 }
Temp->Free();
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String list;
TStringList *s = new TStringList();
  s->Add("email=mymail@mail.ru");
  s->Add("pass=mypass");
  s->Add("expire=0");
  IdHTTP1->Request->Host = "http://vkontakte.ru";
  IdHTTP1->Request->Accept = "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1";
  IdHTTP1->Post("http://vkontakte.ru/login.php", s);
  SetCookies ();  s->Free();
  Memo1->Lines->Text = IdHTTP1->Get("http://vkontakte.ru");
 }
5
D@rkD@iver
112 / 112 / 13
Регистрация: 01.10.2008
Сообщений: 876
22.08.2009, 15:27 11
ZVolodumur, а на mail.ru такие же куки?
0
ZVolodumur
49 / 49 / 4
Регистрация: 21.05.2009
Сообщений: 156
22.08.2009, 22:18 12
Цитата Сообщение от D@rkD@iver Посмотреть сообщение
ZVolodumur, а на mail.ru такие же куки?
Смотри снифером. Я на mail.ru не смотрел.
Будет время попробую.
0
D@rkD@iver
112 / 112 / 13
Регистрация: 01.10.2008
Сообщений: 876
23.08.2009, 08:34 13
а у тебя есть хороший сниффер?
0
ZVolodumur
49 / 49 / 4
Регистрация: 21.05.2009
Сообщений: 156
23.08.2009, 13:11 14
Цитата Сообщение от D@rkD@iver Посмотреть сообщение
а у тебя есть хороший сниффер?
Лично я пользуюсь EffeTech HTTP Sniffer. Скинуть немогу (инет плохой) но могу дать прямую ссылку.

 Комментарий модератора 
Ссылки на варез запрещены правилами форума.
1
iiwanc
1 / 1 / 2
Регистрация: 04.03.2013
Сообщений: 107
26.06.2013, 21:04 15
Цитата Сообщение от ZVolodumur Посмотреть сообщение
Куки надо отлавливать в ручную по причине что CookieManager принимает куки вида Set-Cookie:ID=11111; path=/
А Вконтакте они вида Set-Cookie:remixmid=5704894; expires=Mon, 12-Apr-2010 11:43:08 GMT; path=/; domain=.vkontakte.ru, и CookieManager их принять не может...

Вот рабочий чпособ авторизации на сайте Вконтакте через indy10:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void SetCookies()
{
TStringList *Temp=new TStringList();
Form1->IdHTTP1->Response->RawHeaders->Extract("Set-cookie", Temp);
for (int i = 0; i < Temp->Count; i++)
 {
 Temp->Strings[i]=Temp->Strings[i].SubString(0, AnsiPos(";",Temp->Strings[i])-1)+"; path=/";
 Form1->IdHTTP1->CookieManager->AddCookie(Temp->Strings[i], Form1->IdHTTP1->Request->Host);
 }
Temp->Free();
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String list;
TStringList *s = new TStringList();
  s->Add("email=mymail@mail.ru");
  s->Add("pass=mypass");
  s->Add("expire=0");
  IdHTTP1->Request->Host = "http://vkontakte.ru";
  IdHTTP1->Request->Accept = "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1";
  IdHTTP1->Post("http://vkontakte.ru/login.php", s);
  SetCookies ();  s->Free();
  Memo1->Lines->Text = IdHTTP1->Get("http://vkontakte.ru");
 }
допустим в s->Add("pass=mypass");, s - это edit?
объясните пожалуйста для особо одаренных
0
26.06.2013, 21:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2013, 21:04

IdHTTP Авторизация на сайте
Решил по изучать IdHTTP. Для этого попробовал сделать авторизацию на mail.ru Скачал плагин для...

Авторизация на сайте indy
Не могу авторизоваться на сайте. Вот ссылка на авторизацию: ...

Авторизация на сайте в C++ Builder
Нужно авторизоваться на сайте. Но там hash и key каждый раз меняются, никак не пойму как их...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru