|
idHttp и IdCookieManager - Вопросы и ответы, обсуждения - Ваши вопросы по Pascal/Delphi только в данном разделе |
09.06.2012, 13:00
|
#1
|
|
|
|
Разведчик
|
Регистрация: 05.11.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
idHttp и IdCookieManager
Хочу сделать небольшой клиент для своего форума.
Принцип: при авторизации на форуме в куки пишется некая информация.
Вопрос: как ее отобразить в Delphi? или как сделать так что бы после авторизации (get запроса) можно было отсылать post-запросы и форум видел что я авторизован?
Вопрос 2: как отобразить куки?
Если не сложно подскажите литературу на эту тему, 2 день уже копаюсь и не чего толком не нашел
|
|
|
09.06.2012, 16:15
|
#2
|
|
|
|
Рыцарь
|
Регистрация: 12.04.2009
Сообщений: 394
Популярность: 47903
Сказал(а) спасибо: 515
Поблагодарили 1,124 раз(а) в 430 сообщениях
|
Re: idHttp и IdCookieManager
Литературы на эту тему нету, даже официальной документации (документация доступна для скачивания на официальном сайте, но не обновляется и соответственно она не верная).
Как понять "отобразить куки" ?
Массив всех полученных (и активных) куки находится IdHTTP.CookieManager.CookieCollection.Cookies
________________
В любом из нас спит гений. И с каждым днем все крепче.
Запомните раз и навсегда:= 'Помочь' <> 'Сделайте за меня';
|
|
|
09.06.2012, 17:41
|
#3
|
|
|
|
Разведчик
|
Регистрация: 05.11.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: idHttp и IdCookieManager
|
Цитата: |
|
|
|
|
|
|
|
|
|
Как понять "отобразить куки" ?
|
|
|
|
|
|
Показать все имеющиеся (загруженные)
Подскажи, что у меня не верно:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
Data := TStringList.Create;
IdHTTP1.AllowCookies:=True;
idHTTP1.CookieManager:=IdCookieManager1;
idHTTP1.HandleRedirects:=True;
//---
idHttp1.Request.Host:='ru.grepolis.com';
idHttp1.Request.UserAgent:='Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.52 Safari/536.5';
idHttp1.Request.Accept:='text/plain, */*; q=0.01';
idHttp1.Request.AcceptLanguage:='ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4';
idHttp1.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.3';
idHttp1.Request.Referer:='ru5.grepolis.com';
end;
авторизация на сайте:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var str:string;
k:integer;
begin
RichEdit1.Lines.Add(idHTTP1.Get('http://ru.grepolis.com/?action=login_from_mail&player_id=111&hash=bc7581e891&world_id=ru5'));
str:=RichEdit1.Lines[407];
k:=pos('Game.csrfToken = ',str);
delete(str,1,k+17);
k:=pos('''',str);
delete(str,k,Length(str));
Edit1.Text:=str;
end;
POST запрос:
Код:
procedure TForm1.Button8Click(Sender: TObject);
begin
Data.Clear;
Data.Add('action=claim_load');
Data.Add('town_id='+ListBox1.Items[0]);
Data.Add('h='+Edit1.Text);
Memo1.Lines.Add(idHttp1.Post('http://ru5.grepolis.com/game/index?login=1?', Data));
end;
при выполнении post запроса в мемо можно увидеть, что авторизация не прошла, т.к. выводит на главную страницу с авторизацией.
Я склоняюсь к тому что у меня не пишутся куки. Пробовал проверить куки как ты посоветовал, но не получилось.
я не прошу решения, просто подскажи в какую сторону копать.
Последний раз редактировалось vim.adm; 09.06.2012 в 18:25.
|
|
|
11.06.2012, 00:24
|
#4
|
|
|
|
Рыцарь
|
Регистрация: 12.04.2009
Сообщений: 394
Популярность: 47903
Сказал(а) спасибо: 515
Поблагодарили 1,124 раз(а) в 430 сообщениях
|
Re: idHttp и IdCookieManager
Вариант 1: не правильное содержимое данных пост запроса.
Решение: сравнить сниффером пакеты браузера и программы, найти отличия, исправить разницу.
Вариант 2: используется бета версия библиотек инди.
Решение: скачать и установить стабильную версию инди.
Больше склоняюсь ко второму варианту
Как не получилось проверить наличие куки? IdHTTP.CookieManager.CookieCollection.Cookies.Coun t
Кстати еще событие OnNewCookie в компоненте CookieManager.
Совет: для запросов гет/пост используйте блок try, это поможет избежать ошибок приложения при обрыве соединения и тому подобных проблемах.
________________
В любом из нас спит гений. И с каждым днем все крепче.
Запомните раз и навсегда:= 'Помочь' <> 'Сделайте за меня';
Последний раз редактировалось J-Fobos; 11.06.2012 в 00:26.
|
|
|
11.06.2012, 11:27
|
#5
|
|
|
|
Разведчик
|
Регистрация: 05.11.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: idHttp и IdCookieManager
J-Fobos, Indy 10 стоит
Дело в том что у меня не отправляются куки т.е. они пустые
Подскажи как записать инфу в куки и как их отправлять, вчера весь инет перерыл но так не чего путевого не нашел(
|
|
|
11.06.2012, 11:35
|
#6
|
|
|
|
Разведчик
|
Регистрация: 17.05.2012
Сообщений: 18
Популярность: 66
Сказал(а) спасибо: 20
Поблагодарили 20 раз(а) в 11 сообщениях
|
Re: idHttp и IdCookieManager
у меня так в моем мониторинг чите)
if Form1.ComboBox1.Text = 'http://www.m0nitor.ru/' then
begin
form1.idHttp1 := TIdHTTP.Create(nil);
form1.IdCookieManager1 := TidCookieManager.Create(form1.idHttp1);
form1.idHttp1.CookieManager := form1.IdCookieManager1;
form1.IdHTTP1.Get('http://www.m0nitor.ru/');
begin
data.add('action=vote');
data.add('id='+ Form1.Edit1.Text);
form1.IdHTTP1.Post('http://www.m0nitor.ru/votes.php',data);
end;
end;
|
|
|
11.06.2012, 13:25
|
#7
|
|
|
|
Рыцарь
|
Регистрация: 12.04.2009
Сообщений: 394
Популярность: 47903
Сказал(а) спасибо: 515
Поблагодарили 1,124 раз(а) в 430 сообщениях
|
Re: idHttp и IdCookieManager
Indy 10
У меня Indy 10.5.8.4768, а не просто 10 )) Сначала рекомендую обновить инди, если не прокатит - думать дальше.
________________
В любом из нас спит гений. И с каждым днем все крепче.
Запомните раз и навсегда:= 'Помочь' <> 'Сделайте за меня';
|
|
|
11.06.2012, 22:01
|
#8
|
|
|
|
Разведчик
|
Регистрация: 05.11.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: idHttp и IdCookieManager
обновил Indy до 10.5.8.4768
Проблема осталась той же, при get запросе все проходит на ура т.е. авторизация выполнена, но при выполнении post запроса, пишет что вы не авторизованны.
J-Fobos, можешь описать принцип отправки куков? или они должны автоматически передаваться?
Завтра кину скрины http анализатора, для информации что же происходит у меня.
|
|
|
12.06.2012, 20:57
|
#9
|
|
|
|
Рыцарь
|
Регистрация: 12.04.2009
Сообщений: 394
Популярность: 47903
Сказал(а) спасибо: 515
Поблагодарили 1,124 раз(а) в 430 сообщениях
|
Re: idHttp и IdCookieManager
Надо самому попробовать. Не нашел там формы регистрации. Дай аккаунт для теста.
________________
В любом из нас спит гений. И с каждым днем все крепче.
Запомните раз и навсегда:= 'Помочь' <> 'Сделайте за меня';
|
|
|
12.06.2012, 21:20
|
#10
|
|
|
|
Лейтенант-командор
|
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
|
Re: idHttp и IdCookieManager
vim.adm, просто интересно, какие кукисы ты хочешь отправить Post запросом, предварительно не отправив Get?
Поясню, пожалуй. Кукисы эта такая штука, которую придумали дяди разработчики для хранения данных у пользователя. Естественно, что злые дяди начали использовать их для защиты своих злых сайтов от роботов, проще говоря для аутентификации пользователей.
Едем дальше. С браузера добросовестный юзер для того чтобы авторизоваться на злом сайте злого дяди сначала посылает Get запрос на страницу, где этот злой дядя разместил форму авторизации.
И тут коварный план злого дяденьки по аутентификации пользователь исполняется. Попав на эту страницу, ничего не подозревавший юзер получает порцию кукисов. Дальше эти непонятные кукисы вклиниваются в любой следующий запрос, который этот юзер отправит.
Таким образом, нажав кнопку "Войти", юзер вместе со своими данными отправляет серверу порцию кукисов, а хитрый сервер проверяет их наличие и исходя из этого определяет "подлинность" юзера.
P.S. Если не дошло. то тупо подключи к IdHTTP IdCookieManager и допиши следуещее перед отправкой Post запроса.
Код:
form1.IdHTTP1.Get('http://www.m0nitor.ru/votes.php');
Всем спасибо, все свободны...
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.
|
|
|
12.06.2012, 22:37
|
#11
|
|
|
|
Рыцарь
|
Регистрация: 12.04.2009
Сообщений: 394
Популярность: 47903
Сказал(а) спасибо: 515
Поблагодарили 1,124 раз(а) в 430 сообщениях
|
Re: idHttp и IdCookieManager
VeTaL_UA, http://zhyk.ru/forum/showpost.php?p=3045322&postcount=3 здесь так и есть, сначала гет, а потом пост, загвоздка не в этом.
________________
В любом из нас спит гений. И с каждым днем все крепче.
Запомните раз и навсегда:= 'Помочь' <> 'Сделайте за меня';
|
|
|
13.06.2012, 22:40
|
#12
|
|
|
|
Рыцарь
|
Регистрация: 12.04.2009
Сообщений: 394
Популярность: 47903
Сказал(а) спасибо: 515
Поблагодарили 1,124 раз(а) в 430 сообщениях
|
Re: idHttp и IdCookieManager
В таком виде у меня все работает. Только всегда используйте try, не делайте как я
Код:
var
PostData: TStringList;
begin
IdHTTP1.Request.UserAgent :=
'Mozilla/5.0 (Windows NT 6.1; rv:13.0) Gecko/20100101 Firefox/13.0';
Memo1.Text := IdHTTP1.Get('http://ru.grepolis.com/start');
PostData:=TStringList.Create;
PostData.Add
('json={"name":"************","password":"**********","passwordhash":"","autologin":true}');
IdHTTP1.Post
('http://ru.grepolis.com/start/index?action=login_from_start_page',
PostData);
PostData.Free;
Memo1.Text := IdHTTP1.Get('http://ru.grepolis.com/start');
end;
________________
В любом из нас спит гений. И с каждым днем все крепче.
Запомните раз и навсегда:= 'Помочь' <> 'Сделайте за меня';
|
|
|
14.06.2012, 18:55
|
#13
|
|
|
|
Разведчик
|
Регистрация: 05.11.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: idHttp и IdCookieManager
J-Fobos, благодарю за помощь, все получилось
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Проблема с idhttp запросом!
|
DKENT |
Вопросы и ответы, обсуждения |
4 |
26.08.2011 17:20 |
[Помогите!] IdHTTP помощь
|
niklod |
Школа Читера |
1 |
19.05.2011 04:37 |
[Программа] idHTTP и AMF
|
SCratORS |
Вопросы и ответы, обсуждения |
2 |
21.10.2010 15:31 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 15:03.
|
|