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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2011, 19:47   #1
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
Подмигивание Программная авторизация на сайте

Всем привет! У меня появилась проблема с авторизацией на сайте. Я перепробовал много разных вариантов, но всё никак не могу авторизоваться.

Есть сайт: http://doska.mogilev.by и я на нём зарегистрирован как обычный пользователь. И питаюсь на нём авторизоваться, но по всей видимости беру не те данные для формирования запроса, такие как user= и password=... Вот код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  Http  : TidHttp;
  CM    : TidCookieManager;
  Data  : TStringList;
  StrPage, UserID,  UserName  :  String;
  i : integer;
begin
  try
    Http := TIdHTTP.Create(Self);
    Data := TStringList.Create;
    CM := TidCookieManager.Create(Http);
    Http.AllowCookies := true;
    Http.CookieManager := CM;
    Http.HandleRedirects := true;
    Http.Request.Host:='doska.mogilev.by';
    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://doska.mogilev.by/';
   { Data.Add('mode=login');}
    Data.Add('user=' + Edit1.Text);
    Data.Add('password=' + Edit2.Text);
    StrPage := Http.Post('http://doska.mogilev.by/login.php?do=login.php', Data);
  finally
    Data.Free;
    CM.Free;
    Http.Free;
  end;
  if Pos('<strong>Добро пожаловать, <a href="member.php?u=ххх>'+Edit1.Text,StrPage) <> 0 then 
    ShowMessage('Авторизация прошла успешно')
  else
    ShowMessage('Авторизация провалилась');

  Memo1.Lines.Text := StrPage;
end;
Я в HTML не очень разбираюсь, поэтому хотелось бы узнать как правильно построить запрос? И как правильно и грамотно авторизоваться на этом сайте?
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 01.09.2011, 19:54   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
<input type="text" name="vb_login_username"  />
<input type="checkbox" name="cookieuser"  />
<input type="password"  name="vb_login_password" />
<input type="submit" value="Вход"  />
<input type="hidden" name="s" value="b9c7cf21c128385ed75ef02a823c17c6" />
<input type="hidden" name="securitytoken" value="guest" />
<input type="hidden" name="do" value="login" />
<input type="hidden" name="vb_login_md5password" />
<input type="hidden" name="vb_login_md5password_utf" />
вот все инпуты формы.
и есть ли в вашем коде хоть чтото похожее?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.09.2011, 20:10   #3
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Я открывал исходник странички и пробовал параметры(vb_login_username,vb_logi n_password) но так и не получилось. Я попробую ещё.
И ещё возможно я тут адрес не верно указал.
Код:
StrPage := Http.Post('http://doska.mogilev.by/login.php?do=login.php', Data);
Хотя сейчас немного всё подправил. Попробую позже, а то не пускает даже просто
(Неверное имя пользователя или пароль. Вы использовали предел попыток входа! Попробовать войти в следующий раз вы сможете не ранее, чем через 15 минут.)
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 02.09.2011, 01:42   #4
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Всё равно что-то не получается авторизироваться. Переписывал код. Под другие сайты всё работает, а под этот не хочет.
Делаю так:
Код:
...
Http.Request.Host:='doska.mogilev.by';
    Http.Request.UserAgent:='Opera/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://doska.mogilev.by/';
    Data.Add('vb_login_username=Логин');
    Data.Add('vb_login_password=Пароль');
    StrPage := Http.Post('http://doska.mogilev.by/', Data);
  finally
    Data.Free;
    CM.Free;
    Http.Free;
  end;
  if Pos('Спасибо, что зашли',StrPage) <> 0 then
    ShowMessage('Авторизация прошла успешно')
  else
    ShowMessage('Авторизация провалилась');
    Memo1.Lines.Text := StrPage;
end;
По идеи всё должно быть правильно, но что-то не идёт.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 02.09.2011, 02:42   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Шото у меня все прекрасно авторизует:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  Ts:TStringList;
  s:string;
  i:integer;
begin
  Ts:=TStringList.Create;
  try
  Ts.add('vb_login_username=Test35');
  Ts.Add('vb_login_password=123456789');
  Ts.Add('s=');
  Ts.Add('securitytoken=guest');
  Ts.Add('do=login');
  Ts.Add('vb_login_md5password=');
  Ts.Add('vb_login_md5password_utf=');
  s:=UTF8Encode(http.Post('http://doska.mogilev.by/login.php?do=login',ts));
  i:= Pos('Test35',s);
  If i > 0 then
  begin
    ShowMessage('TRUE');
  end;
  finally
   Ts.Free;
  end;
end;
вся проблема в том, что после логина выпадает страничка. и нужно ждать n время чтобы поймать редирект с этой страницы на форум. Чего выше приведёенный код не делает, он ищет ник в строке "Спасибо, что зашли, Test35."

Я вижу выход из этой ситуации:
1. использовать кукис манагер
Вот что принимает, посылает браузер с галочкой "запомнить".

Кукисы:
1.
Код:
Cookie Name    Value                                                                   
bbsessionhash  824ac4987691d0fa86e8340492fb0fdd                                        
__utma         195849017.551618498.1314915805.1314915805.1314915805.1                  
__utmb         195849017.15.10.1314915806                                              
__utmc         195849017                                                               
__utmz         195849017.1314915806.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)  
cc             1
2.
Код:
Set-Cookie Name  Value                             Path  Domain            Expires                        
bblastvisit      1314917474                        /     doska.mogilev.by  Fri, 31-Aug-2012 22:51:14 GMT  
bblastactivity   0                                 /     doska.mogilev.by  Fri, 31-Aug-2012 22:51:14 GMT  
bbuserid         16823                             /     doska.mogilev.by  Fri, 31-Aug-2012 22:51:14 GMT  
bbpassword       9cc886da27be32cd98a7d58e9dcbc29d  /     doska.mogilev.by  Fri, 31-Aug-2012 22:51:14 GMT  
bbsessionhash    7d36f6ff354954d480661d1ff1c6837f  /     doska.mogilev.by
Параметры POST запроса:
Код:
vb_login_username=Test35
cookieuser=1
vb_login_password=123456789
s=
securitytoken=1314917437-544e9ec5bbfd6a1ae1388ae9acc4ae164cede0ac
do=login
vb_login_md5password=
vb_login_md5password_utf=

Последний раз редактировалось Человек_Борща; 02.09.2011 в 02:57.
Человек_Борща вне форума Ответить с цитированием
Старый 02.09.2011, 22:33   #6
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Пепел Феникса,Человек_Борща, спасибо Вам большое. С Вашей помощью разобрался и всё получилось. С меня +.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 02.09.2011, 23:05   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

На будущее, для таких вещей используй HTTPAnalyzer очень удобно снифать трафик http видно абсолютно все=)
Человек_Борща вне форума Ответить с цитированием
Старый 02.09.2011, 23:36   #8
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
На будущее, для таких вещей используй HTTPAnalyzer очень удобно снифать трафик http видно абсолютно все=)
Спасибо!
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 02.09.2011, 23:45   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Могу скинуть сразу с кряком. Пиши в ЛС, если надо =)
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация на сайте record222 Работа с сетью в Delphi 12 01.01.2011 00:17
Авторизация на сайте. Pliks Общие вопросы по Java, Java SE, Kotlin 5 08.06.2010 13:51
Авторизация на сайте zumm Общие вопросы Delphi 1 23.05.2010 20:00
Авторизация на сайте doniyor Работа с сетью в Delphi 1 18.04.2010 13:54
Авторизация на сайте MultiBit Работа с сетью в Delphi 6 13.03.2009 18:45