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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2012, 17:58   #1
Rendll
 
Регистрация: 25.03.2009
Сообщений: 7
По умолчанию Дополнительная переменная при авторизации

Всем привет. Решил написать авторизацию на сайте http://cp.lostworld.su/login/ . Куки получает, но не удается авторизоватся. Я думаю что вся проблема в неком параметре
Цитата:
name="csrf-protect" value="f78048c57c4b9673654aefa67c30 fe72"
Откуда он берется, так и не понял. Заметил что он меняет свое значение при смене ИП адреса.

Вот мой код

PHP код:
procedure TForm1.FormCreate(SenderTObject);
var 
MS:TMemoryStream;
     
picTJPEGImage;
begin
MS
:=TMemoryStream.Create;
idHTTP1.Get('http://cp.lostworld.su/captcha/',MS);
MS.Position:=0;
pic:= TJPEGImage.Create;
pic.LoadFromStream(MS);
Image1.Picture.Assign(pic);
MS.Free;
pic.Free;
end;

procedure TForm1.Button4Click(SenderTObject);
var 
MS:TMemoryStream;
     
picTJPEGImage;
begin
MS
:=TMemoryStream.Create;
idHTTP1.Get('http://cp.lostworld.su/captcha/',MS);
MS.Position:=0;
pic:= TJPEGImage.Create;
pic.LoadFromStream(MS);
Image1.Picture.Assign(pic);
MS.Free;
pic.Free;
end;

procedure TForm1.Button1Click(SenderTObject);
var
 
LoginData:TStringList;
 
i:string;
begin
 LoginData
:=Tstringlist.Create;
 
LoginData.Add('login='Edit1.Text);
 
LoginData.Add('password='Edit2.Text);
 
LoginData.Add('captcha='Edit3.Text);
 
LoginData.Add('csrf-protect=f78048c57c4b9673654aefa67c30fe72'); // пробовал так, тоже не проходит.
 
i:=idHTTP1.Post('http://cp.lostworld.su/login/'LoginData);
 if 
Pos('<span>Мастер Аккаунт:</span>',i) <> 0 then
    ShowMessage
('Успешно')
  else
    
ShowMessage('Неуспешно');
  
LoginData.Free;
 
end;

end
Надеюся на вашу помощь. Я новичек, но хочю углубится в эту тему, по этому прошу сильно не закидовать "хорошими" словечками ))

Вот логин и пароль для входа, чтоб не регистрироватся:
4ejiobekob
Hhththth785

Последний раз редактировалось Rendll; 02.08.2012 в 18:04.
Rendll вне форума Ответить с цитированием
Старый 02.08.2012, 18:21   #2
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Делаешь get запрос, парсишь от туда f78048c57c4b9673654aefa67c30fe72 (каждый раз я думаю он будит разный). Ну и потом уже отправляешь post.
bakanaev вне форума Ответить с цитированием
Старый 02.08.2012, 18:35   #3
Rendll
 
Регистрация: 25.03.2009
Сообщений: 7
По умолчанию

В том и вся проблема что он устанавливается только при логине а не при посещении
http://cp.lostworld.su/login/ как куки. И он меняется только при смене ИП адреса, я уже проверял.
Rendll вне форума Ответить с цитированием
Старый 03.08.2012, 03:59   #4
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Цитата:
Сообщение от Rendll Посмотреть сообщение
В том и вся проблема что он устанавливается только при логине а не при посещении
http://cp.lostworld.su/login/ как куки. И он меняется только при смене ИП адреса, я уже проверял.
ДА? А вот у меня при посещении, как собственно у всех)) Так что пиши прогу свою, <input type="hidden" name="csrf-protect" value="тут твое значение" /></ul></td><td width
Как разберешься бегом вот сюда http://programmersforum.ru/showpost....91&postcount=6
Удачи

Последний раз редактировалось bakanaev; 03.08.2012 в 08:22.
bakanaev вне форума Ответить с цитированием
Старый 03.08.2012, 11:58   #5
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Ну что? Получилось?
bakanaev вне форума Ответить с цитированием
Старый 03.08.2012, 13:46   #6
Rendll
 
Регистрация: 25.03.2009
Сообщений: 7
По умолчанию

вроде как авторизация проходит если смотреть чере Снифер, но программа не определяет правильно вход.Как проверить вошло или нет? и ещё такой момент. Когда я логинюся через браузер то идет 1 POST запрос а второй GET, а когда логинюся через программу то 2 POST запроса(1-ый 302? второй 200). Возможно надо после пост запроса отправлять ещё 1 GET запрос и тогда с него парсить страницу чтоб проверить или прошла авторизация или нет?
Rendll вне форума Ответить с цитированием
Старый 03.08.2012, 13:54   #7
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Позже гляну что к чему, терпение
bakanaev вне форума Ответить с цитированием
Старый 03.08.2012, 14:10   #8
Rendll
 
Регистрация: 25.03.2009
Сообщений: 7
По умолчанию

Цитата:
procedure TForm1.Button1Click(Sender: TObject);
var
LoginData:TStringList;
i:string;
begin
IdHTTP1.AllowCookies:=true;
key:= idHTTP1.Get('http://cp.lostworld.su/login/');
Delete(key,1,pos('<input type="hidden" name="csrf-protect" value=',key)+length('<input type="hidden" name="csrf-protect" value='));
Delete(key,pos('" />',key),length(key));
LoginData:=Tstringlist.Create;
LoginData.Add('login='+ Edit1.Text);
LoginData.Add('password='+ Edit2.Text);
LoginData.Add('captcha='+ Edit3.Text);
LoginData.Add('csrf-protect='+key);
i:=idHTTP1.Post('http://cp.lostworld.su/login/', LoginData);
LoginData.Free;
idcookiemanager1.cookiecollection.c lear;
end;
Код теперь.
Rendll вне форума Ответить с цитированием
Старый 03.08.2012, 14:33   #9
Rendll
 
Регистрация: 25.03.2009
Сообщений: 7
По умолчанию

все не ломайте голову я сделал. спс большое за помощь! =)
Rendll вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[PHP] Проблема при авторизации Krasi Помощь студентам 9 29.02.2012 15:09
Возврат на придыдущюю страницу при авторизации PadVonE PHP 2 05.03.2011 22:31
Не проходит логическое условие при авторизации. nikolas0 Работа с сетью в Delphi 13 22.01.2011 21:56
Смена картинки при авторизации tyze Общие вопросы Delphi 3 30.06.2010 21:49
дополнительная переменная или условие... segail Microsoft Office Excel 3 13.12.2009 22:37