Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.07.2013, 06:54
Аватар для Amilman
Amilman Amilman вне форума
Новичок
 
Регистрация: 27.03.2011
Адрес: г.Кемерово
Сообщения: 98
Версия Delphi: XE
Репутация: 10
Вопрос Авторизация на сайте. Проблема с Token

Всем доброго времени суток. Хочу зайти насайт через свою програму. но как выяснилось для авторизации на сайте сайт генерирует token. Каждый раз он новый. Вопрос как мне сделать авторизацию. Есть идея что сначала он должен подгрузить код найти там token и только потом провести Авторизацию с подстоновкой token-а в нужное место. А вот как реализовать я не понимаю =\

Код post запроса на сайте выглядит так.
PHP код:
<div id="SignInOrSignUpDialog" title="Велком!" class="qtipped" style="display: none;">
              <
form method="POST" action="/login" name="sf_guard_signin" id="sf_guard_signin" class="sfSignin">
  <
li>
  <
label for="signin_username">Логин:</label>
  <
input type="text" name="signin[username]" id="signin_username" />
</
li>
<
li>
  <
label for="signin_password">Пароль:</label>
  <
input type="password" name="signin[password]" id="signin_password" />
</
li>
<
li>
  <
label for="signin_remember">Запомнить меня</label>
  <
input type="checkbox" name="signin[remember]" checked="checked" id="signin_remember" />
<
input type="hidden" name="signin[_csrf_token]" value="72384a7deb531d60b3102bf0dd6a2097" id="signin__csrf_token" /></li>
  <
input type="submit" value="Войти" />
</
form

Пробовал по примеру:
Код:
function extract(const text, begin1, end1: string): string;
var
  startpos, endpos: integer;
begin
  result := '';
  startpos := Pos(begin1, text);
  if startpos < 1 then
    exit;
  inc(startpos, length(begin1));
  endpos := Pos(end1, text, startpos);
  if endpos < 1 then
    exit;
  result := Copy(text, startpos, endpos - startpos);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  StrPage, Url, token: string;
  Log: TStringList;
begin
  Url := 'http://joyreactor.cc/login';
  StrPage := IdHTTP1.Get(Url);
  token := extract(StrPage, 'name="token" value="', '"');
  Log := TStringList.Create;
  IdHTTP1.Response.RawHeaders.extract('Set-cookie', Log);
  IdHTTP1.Request.CustomHeaders.text := 'Cookie:joyreactor=' + extract(Log.text,
  'joyreactor=', ';') + ';';
  Log.Clear;
  Log.Add('signin[username]=' + Edit1.text);
  Log.Add('signin[password]=' + Edit2.text);
  Log.Add('signin[remember]=on');
  Log.Add('signin[_csrf_token]=' + token);
  StrPage := IdHTTP1.Post(Url, Log);
  if Pos(ansitoutf8('Велком!'), StrPage) <> 0 then showmessage('Добро пожаловать')
  else
  showmessage('Ошибка');
  Log.Free;

Но при попытке авторизироваться, пишет ошибка HTTP/1.1 401 Unauthorized.

Не пойму что нужно сделать.

HTTP Analyzer выдал вот что:
Код:
Request Headers	Value
(Request-Line)	POST /login HTTP/1.1
Host	joyreactor.cc
User-Agent	Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Accept	text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language	ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding	gzip, deflate
Referer	http://joyreactor.cc/login
Cookie	__utma=181973772.126570559.13468411 75.1371153093.1373369970.11; __utmz=181923772.1371113093.10.7.ut mcsr=go.mail.ru|utmccn=(organic)|ut mcmd=organic|utmctr=joyreactor; joyreactor=ver2ba21bd226380863fe1e6 21c664a16cca:29b9a9f37d055896677692 45a9f9b87f6d339644; __utmb=181924772.9.10.1373369970; __utmc=181923772
Connection	keep-alive
Content-Type	application/x-www-form-urlencoded
Content-Length	138

И в разделе Post Data:
Код:
Parameter Name	Value
signin[username]	Vasya
signin[_csrf_token]	b04b6fb4f43c5b05a8f01ec4d40b452b
signin[remember]	on
signin[password]	Pupkin

Заранее спасибо за помощь.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:40.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter