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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.10.2010, 00:07
smilique smilique вне форума
Прохожий
 
Регистрация: 11.10.2010
Сообщения: 7
Репутация: 10
Вопрос Логин с помощью Indy

Есть проблема с Indy HTTP
надо залогиниться на сайтег

Код:
tst:= TStringList.Create;
tst.Add('nick=***');
tst.Add('password=*');
s:=IdHTTP1.Post('урл',tst);

тут всё впорядке, выдаётся правильная страница, на которой нужно ввести дополнительный пароль
ввожу дополнительный пароль

Код:
tst.Clear;
tst.Add('check=***');
s:=IdHTTP1.Post('урл',tst);
Admin: Пользуемся тегами!

и в ответ приходит уже первая страница с сообщением о том, что надо бы ввести логин и пароль

в чём тут фишка, куки не работают чтоли?

Последний раз редактировалось Admin, 11.10.2010 в 10:26.
Ответить с цитированием
  #2  
Старый 11.10.2010, 01:28
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ага, именно они. Еще проверить referal не помешает.
Ответить с цитированием
  #3  
Старый 11.10.2010, 20:26
smilique smilique вне форума
Прохожий
 
Регистрация: 11.10.2010
Сообщения: 7
Репутация: 10
По умолчанию

Куки включены и менеджер подключен:
Код:
IdHTTP1.AllowCookies:=True;
IdHTTP1.CookieManager:=IdCookieManager1;

А где насчёт referal смотреть?
Ответить с цитированием
  #4  
Старый 11.10.2010, 21:08
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

в запросе указывается с какой страницы происходит вызов.
соответсвенно, тебе надо это указать.

Если мне не изменяет память, то просто надо в момент вызова добавить этот refer в заголовок запроса.
Ответить с цитированием
  #5  
Старый 11.10.2010, 22:55
smilique smilique вне форума
Прохожий
 
Регистрация: 11.10.2010
Сообщения: 7
Репутация: 10
По умолчанию

Если это такая вот штука:
Код:
IdHTTP1.Request.Referer:='урл';
то не работает
Ответить с цитированием
  #6  
Старый 12.10.2010, 00:25
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

ну еще проверь, что никаких скрытых полей на форме нет. Если есть, то надо передавать значения и для них.
Ответить с цитированием
  #7  
Старый 12.10.2010, 10:39
smilique smilique вне форума
Прохожий
 
Регистрация: 11.10.2010
Сообщения: 7
Репутация: 10
По умолчанию

не нету, да там запросов других не идёт, я смотрел

там флеш, на нём пароль набирается, я чарльзом выловил запрос с паролем, но его не принимает, даже попробовал в хроме через гет ввести этот второй пароль - не катит.
значит не в куки проблема
значит наверное каким-то образом надо вводить пароль на флеше...
Ответить с цитированием
  #8  
Старый 12.10.2010, 17:17
Аватар для pesi
pesi pesi вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
По умолчанию

ссылку можно посмотреть
Ответить с цитированием
  #9  
Старый 12.10.2010, 19:10
smilique smilique вне форума
Прохожий
 
Регистрация: 11.10.2010
Сообщения: 7
Репутация: 10
По умолчанию

http://neverlands.ru
Ответить с цитированием
  #10  
Старый 12.10.2010, 23:04
Аватар для pesi
pesi pesi вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
По умолчанию

1. Попробуй сначала гет запрос на http://neverlands.ru/
2. Добавить
Код:
idhttp1.Request.Referer:= 'http://neverlands.ru/';
3. Пост запрос
Код:
data:= TStringList.Create;
data.Add('player_nick=***'); //указать логин
data.Add('=Пароль'); //это не меняем
data.Add('player_password=***'); //указать пароль
s:= IdHTTP1.Post('http://neverlands.ru/game.php', data);
надо сделать поиск по ответу для проверки корректности логина и пароля
Код:
if Pos('Неверный логин или пароль', S)>0 then 
ShowMessage('Неверный логин или пароль!')
Ответить с цитированием
  #11  
Старый 13.10.2010, 02:06
smilique smilique вне форума
Прохожий
 
Регистрация: 11.10.2010
Сообщения: 7
Репутация: 10
По умолчанию

Авторизация логин\пароль всегда проходит, не получается ввод флеш пароля, после которого вылетает на главную с ошибкой:
Код:
IdHTTP1.Get('http://neverlands.ru/');
idhttp1.Request.Referer:= 'http://neverlands.ru/';
tst:= TStringList.Create;
tst.Add('player_nick=***');
tst.Add('=Пароль');
tst.Add('player_password=***');
s:=IdHTTP1.Post('http://neverlands.ru/game.php',tst);
ShowMessage(s); //тут получаю код страницы с флеш вводилкой пароля
tst.Clear;
Memo1.Clear;
IdHTTP1.Request.Referer:='http://neverlands.ru/game.php';
tst.Add('flcheck=***');
tst.Add('nid=***');
s:=IdHTTP1.Post('http://neverlands.ru/game.php',tst);
ShowMessage(s); // а тут уже ошибку
т.е. главные логин и пароль не при чём какбы
Ответить с цитированием
  #12  
Старый 13.10.2010, 13:58
Аватар для pesi
pesi pesi вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
По умолчанию

При отпраке первого пароля получаем ответ, в ответе нужно найти значение <param name="flashvars" value="plid=2063100"> а точнее нужно то что идет после plid= в моем случаи это 2063100
Код:
IdHTTP1.Request.Referer:='http://neverlands.ru/swf/flashpass.swf';
data.Clear;
data.Add('nid=***'); //указать то что мы искали в ответе
data.Add('flcheck=***'); //указать второй пароль
s:= IdHTTP1.Post('http://neverlands.ru/game.php', data);
Ответить с цитированием
  #13  
Старый 13.10.2010, 20:04
smilique smilique вне форума
Прохожий
 
Регистрация: 11.10.2010
Сообщения: 7
Репутация: 10
По умолчанию

Исправил реферрер, исправил очерёдность nid и flcheck, значения правильные, всё равно не работает

Что еще может быть неправильно с моей стороны?
Ответить с цитированием
  #14  
Старый 14.10.2010, 19:08
Аватар для pesi
pesi pesi вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
По умолчанию

Ф-Я для поиска сокета, а то IdHTTP его не добавляет придется его найти и вручную добавить
Код:
function GetCookie(S: String): String;
var
  I: Integer;
begin
  Result := '';
  I:= Pos('SEPAPSQE', S);
  if I > 0 then
  begin
    Delete(S, 1, I-1);
    I:= Pos(';', S);
    Result := Copy(S, 1, I);
  end;
end;

Шаг первый
Код:
  S:= IdHTTP1.Get('http://neverlands.ru/'); //гет запрос для получения сокета
  IdHTTP1.CookieManager.AddCookie(GetCookie(IdHTTP1.Response.RawHeaders.Text), 'neverlands.ru');  // добавляем сокет
  IdHTTP1.Request.Referer:= 'http://neverlands.ru/';
  Data:= TStringList.Create;
  Data.Add('player_nick=***'); //указать логин
  Data.Add('=Пароль'); //это не меняем
  Data.Add('player_password=***'); //указать пароль
  S:= IdHTTP1.Post('http://neverlands.ru/game.php', Data);
  Data.Free;

Шаг второй
Код:
  IdHTTP1.Request.Referer:='http://neverlands.ru/swf/flashpass.swf';
  Data:= TStringList.Create;
  Data.Add('flcheck=*****'); //указать второй пароль
  Data.Add('nid=*****'); //указать то что мы искали в ответе, по ходу дела это значение не меняется
  S:= IdHTTP1.Post('http://neverlands.ru/game.php', Data);
  Data.Free;
  S:= IdHTTP1.Get('http://neverlands.ru/main.php');

Вся петрушка в том, что IdHTTP автоматом не добавлял сокет
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter