|
01.01.2011, 02:18
|
#1
|
Оператор ЭВМ
Регистрация: 25.10.2007
Сообщений: 30
Написано одно полезное сообщение (для 2 участников)
|
Авторизация Delphi
Привет всем!
С 2011 годом вас всех.
Теперь собственно вопрос. Я делаю программу для проекта wmmail.ru точнее делаю ее по пунктам.
1. Авторизация
2. Чтение писем
3. Серфинг и Автосерфинг
3. Шаг я полностью сделал
Теперь необходимо выполнить 1 шаг. В общем ситуация следующая:
Я использую компонент Indy чтобы послать post запрос на сайт, при этом авторизация проходит успешно авторизацию, но как только я пытаюсь перейти на сайт wmmail.ru в компоненте webbrowser мне пишут что я не авторизирован. Помогите исходный код ниже
procedure TForm1.Button3Click(Sender: TObject); var list: TStringList; begin list := TStringList.Create; WebBrowser1.Navigate('http://wmmail.ru/'); list.Add('cf=akk-login'); list.Add('ulogin=Мой логин'); list.Add('pass=Мой пароль'); list.Add('x=16'); list.Add('y=18'); list.Add('remember=on'); try memo1.lines.text := IdHTTP1.Post('http://wmmail.ru/index.php',list); memo1.Lines.SaveToFile('aaa.htm'); WebBrowser1.Navigate(extractfilepath(application.exename)+'aaa.htm'); finally list.Free; IdHTTP1.Disconnect; end; end;
Как сделать так чтобы я мог быть до конца авторизирован ?
Сразу говорю я не программист поэтому если можете пожалуйста помогите строчками кода, мне в них легче разбираться чем в литературе. А если возможно просто исправьте код на правильный. Большое спасибо
|
(Offline)
|
|
02.01.2011, 06:05
|
#2
|
Оператор ЭВМ
Регистрация: 08.12.2010
Адрес: Белорусь
Сообщений: 25
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Авторизация Delphi
Гляньте пример тут http://www.delphisources.ru/pages/so...n-mail.ru.html
Но лично я бы рекомендовал пользоваться библиотекой synapse.
Вообще интересно, как вам удалось написать код для серфинга, не залогонившись на сайт...
|
(Offline)
|
|
04.01.2011, 01:25
|
#3
|
Оператор ЭВМ
Регистрация: 08.12.2010
Адрес: Белорусь
Сообщений: 25
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Авторизация Delphi
Если еще нужно, вот код, вырванный из моей одной проги. Необходим синапс.
function wmmail_ru_func: bool; var temp: string; HTTP: THTTPSend; URLData: string; Label end_; begin HTTP:= THTTPSend.Create; try form1.Memo1.Lines.Add('wmmail.ru - Логонимся...') ; HTTP.Headers.Add('Referer: http://www.wmmail.ru/index.php'); URLData := 'cf=akk-login&ulogin='+login+'&pass='+pass+'&x=11&y=12'; HTTP.Document.Write(Pointer(URLData)^, Length(URLData)); HTTP.MimeType := 'application/x-www-form-urlencoded'; if not HTTP.HTTPMethod('POST', 'http://www.wmmail.ru/index.php') then begin form1.Memo1.Lines.Add('www.wmmail.ru - Ошибка связи!') ; goto end_; end; temp:= StreamToString(HTTP.Document) ; HTTP.Document.SaveToFile('logs\wmmail.ru-login-1_[docum].html'); HTTP.Headers.SaveToFile('logs\wmmail.ru-login-1_[head].html'); if pos('Последнее посещение аккаунта', temp)>0 then begin form1.Memo1.Lines.Add('wmmail.ru - этап 1 - ok') ; result:=true; end else begin form1.Memo1.Lines.Add('wmmail.ru - этап 1 - Ошибка!') ; goto end_; end; // обработка результата end_: finally HTTP.Free; result:=false; end; end;
Как-то так...
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
04.03.2011, 15:22
|
#4
|
ПроЭктировщик
Регистрация: 10.03.2009
Адрес: Казахстан->Кустанай
Сообщений: 147
Написано 12 полезных сообщений (для 23 пользователей)
|
Ответ: Авторизация Delphi
Сообщение от anton_obuhov
Привет всем!
С 2011 годом вас всех.
Теперь собственно вопрос. Я делаю программу для проекта wmmail.ru точнее делаю ее по пунктам.
1. Авторизация
2. Чтение писем
3. Серфинг и Автосерфинг
3. Шаг я полностью сделал
Теперь необходимо выполнить 1 шаг. В общем ситуация следующая:
Я использую компонент Indy чтобы послать post запрос на сайт, при этом авторизация проходит успешно авторизацию, но как только я пытаюсь перейти на сайт wmmail.ru в компоненте webbrowser мне пишут что я не авторизирован. Помогите исходный код ниже
procedure TForm1.Button3Click(Sender: TObject); var list: TStringList; begin list := TStringList.Create; WebBrowser1.Navigate('http://wmmail.ru/'); list.Add('cf=akk-login'); list.Add('ulogin=Мой логин'); list.Add('pass=Мой пароль'); list.Add('x=16'); list.Add('y=18'); list.Add('remember=on'); try memo1.lines.text := IdHTTP1.Post('http://wmmail.ru/index.php',list); memo1.Lines.SaveToFile('aaa.htm'); WebBrowser1.Navigate(extractfilepath(application.exename)+'aaa.htm'); finally list.Free; IdHTTP1.Disconnect; end; end;
Как сделать так чтобы я мог быть до конца авторизирован ?
Сразу говорю я не программист поэтому если можете пожалуйста помогите строчками кода, мне в них легче разбираться чем в литературе. А если возможно просто исправьте код на правильный. Большое спасибо
|
Может и некропост, но все же, если память не изменяет, компонент Indy и компонент WebBrowser между собой связи не имеют и следовательно кука для авторизации на сайте не проставляется. Тут или извращаться с дочерними окнами в WebBrowser либо на время авторизации "тушить" его и делать авторизацию им.
|
(Offline)
|
|
30.06.2013, 18:08
|
#5
|
|
Ответ: Авторизация Delphi
Час от часу не легче. TIDhttp для кого? Его используйте!
|
|
|
30.06.2013, 18:21
|
#6
|
Нуждающийся
Регистрация: 28.10.2010
Сообщений: 95
Написано 23 полезных сообщений (для 34 пользователей)
|
Ответ: Авторизация Delphi
Сообщение от Dependency Walker
Час от часу не легче. TIDhttp для кого? Его используйте!
|
Некрофилией, батенька, занимаемся?
|
(Offline)
|
|
30.06.2013, 19:00
|
#7
|
|
Ответ: Авторизация Delphi
Поскольку никто не ответил правильно, это не некропост. А тема актуальна - поэтому я и написал. В чем же ошибка?
А вот в чем:
* не использован соответствующий компонент (Idhttp client);
* не использован куки- менеджер;
* одной только отсылкой в пост-запросе логина и пароля дело не решить, т.к нужно парсить токен и время создания.
Эти параметры нужно поместить в tstringlist и отослать вместе с постом.
Вообще, правильное общение с сайтом - очень тонкая наука. Нужно сниффить с браузера и уже опираясь на логи сниффера, составлять свой запрос.
|
|
|
30.06.2013, 19:10
|
#8
|
Нуждающийся
Регистрация: 28.10.2010
Сообщений: 95
Написано 23 полезных сообщений (для 34 пользователей)
|
Ответ: Авторизация Delphi
Сообщение от Dependency Walker
Поскольку никто не ответил правильно, это не некропост. А тема актуальна - поэтому я и написал. В чем же ошибка?
А вот в чем:
* не использован соответствующий компонент (Idhttp client);
* не использован куки- менеджер;
* одной только отсылкой в пост-запросе логина и пароля дело не решить, т.к нужно парсить токен и время создания.
Эти параметры нужно поместить в tstringlist и отослать вместе с постом.
Вообще, правильное общение с сайтом - очень тонкая наука. Нужно сниффить с браузера и уже опираясь на логи сниффера, составлять свой запрос.
|
Ну тогда, позволю себе заметить, что рекомендовать Indy компоненты для работы с сетью - само по себе грех, учитывая нестабильность и глючность этих компонентов самих по себе.
|
(Offline)
|
|
30.06.2013, 19:26
|
#9
|
|
Ответ: Авторизация Delphi
рекомендовать Indy компоненты для работы с сетью - само по себе грех
|
Простите меня падре, ибо я согрешил. Лучше Indy вообще ничего нет для работы с сетью. Главное, внимательно читать справку и знать, что ты хочешь сделать.
Админы, настоятельно рекомендую меня забанить. Я думал, что на сайте серьезные люди, а на поверку выяснилось, что школоло. Не все, но многие. Воспитателем в садик я не нанимался.
|
|
|
30.06.2013, 19:28
|
#10
|
Нуждающийся
Регистрация: 28.10.2010
Сообщений: 95
Написано 23 полезных сообщений (для 34 пользователей)
|
Ответ: Авторизация Delphi
Сообщение от Dependency Walker
Простите меня падре, ибо я согрешил. Лучше Indy вообще ничего нет для работы с сетью. Главное, внимательно читать справку и знать, что ты хочешь сделать.
Админы, настоятельно рекомендую меня забанить. Я думал, что на сайте серьезные люди, а на поверку выяснилось, что школоло. Не все, но многие. Воспитателем в садик я не нанимался.
|
WinSock... Чистый WinSock, сын мой.
|
(Offline)
|
|
30.06.2013, 19:30
|
#11
|
|
Ответ: Авторизация Delphi
WinSock... Чистый WinSock, сын мой.
|
Ну конечно. Indy писали школьники с Башорга, не надо позориться, пользоваться их разработками... Надо непременно изобрести свой велосипед.
Быдлокодить Indy не даст; читай справку и пиши так, как там написано. Иначе никак. За это ее многие ругают. ( Печально.
К слову, чтобы в винсоках сделать поддержку редиректов нужно час пилить, хотя в Indy это делается 1 строчкой: HanldeRedirect:=true
Но на вкус и цвет, как известно, ...
|
|
|
30.06.2013, 19:36
|
#12
|
Нуждающийся
Регистрация: 28.10.2010
Сообщений: 95
Написано 23 полезных сообщений (для 34 пользователей)
|
Ответ: Авторизация Delphi
Сообщение от Dependency Walker
Ну конечно. Indy писали школьники с Башорга, не надо позориться, пользоваться их разработками... Надо непременно изобрести свой велосипед.
Низкий уровень любишь? А чего тогда тут забыл, на форуме Delpih? Пиши на c++.
|
Задаюсь тем же вопросом, раз Вы такой умный, чего Вы тут забыли?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:23.
|