forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Delphi (http://forum.boolean.name/forumdisplay.php?f=66)
-   -   Авторизация Delphi (http://forum.boolean.name/showthread.php?t=13977)

anton_obuhov 01.01.2011 02:18

Авторизация Delphi
 
Привет всем!
С 2011 годом вас всех.
Теперь собственно вопрос. Я делаю программу для проекта wmmail.ru точнее делаю ее по пунктам.
1. Авторизация
2. Чтение писем
3. Серфинг и Автосерфинг

3. Шаг я полностью сделал
Теперь необходимо выполнить 1 шаг. В общем ситуация следующая:
Я использую компонент Indy чтобы послать post запрос на сайт, при этом авторизация проходит успешно авторизацию, но как только я пытаюсь перейти на сайт wmmail.ru в компоненте webbrowser мне пишут что я не авторизирован. Помогите исходный код ниже
PHP код:

procedure TForm1.Button3Click(SenderTObject);
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

Как сделать так чтобы я мог быть до конца авторизирован ?
Сразу говорю я не программист поэтому если можете пожалуйста помогите строчками кода, мне в них легче разбираться чем в литературе. А если возможно просто исправьте код на правильный. Большое спасибо

fall 02.01.2011 06:05

Ответ: Авторизация Delphi
 
Гляньте пример тут http://www.delphisources.ru/pages/so...n-mail.ru.html
Но лично я бы рекомендовал пользоваться библиотекой synapse.
Вообще интересно, как вам удалось написать код для серфинга, не залогонившись на сайт...

fall 04.01.2011 01:25

Ответ: Авторизация Delphi
 
Если еще нужно, вот код, вырванный из моей одной проги. Необходим синапс.
PHP код:

function wmmail_ru_funcbool;
var
  
tempstring;
  
HTTPTHTTPSend;
  
URLDatastring;
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

Как-то так...

Baisangur 04.03.2011 15:22

Ответ: Авторизация Delphi
 
Цитата:

Сообщение от anton_obuhov (Сообщение 174029)
Привет всем!
С 2011 годом вас всех.
Теперь собственно вопрос. Я делаю программу для проекта wmmail.ru точнее делаю ее по пунктам.
1. Авторизация
2. Чтение писем
3. Серфинг и Автосерфинг

3. Шаг я полностью сделал
Теперь необходимо выполнить 1 шаг. В общем ситуация следующая:
Я использую компонент Indy чтобы послать post запрос на сайт, при этом авторизация проходит успешно авторизацию, но как только я пытаюсь перейти на сайт wmmail.ru в компоненте webbrowser мне пишут что я не авторизирован. Помогите исходный код ниже
PHP код:

procedure TForm1.Button3Click(SenderTObject);
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 либо на время авторизации "тушить" его и делать авторизацию им.

Dependency Walker 30.06.2013 18:08

Ответ: Авторизация Delphi
 
Час от часу не легче. TIDhttp для кого? Его используйте!

RokWeb 30.06.2013 18:21

Ответ: Авторизация Delphi
 
Цитата:

Сообщение от Dependency Walker (Сообщение 262326)
Час от часу не легче. TIDhttp для кого? Его используйте!

Некрофилией, батенька, занимаемся?

Dependency Walker 30.06.2013 19:00

Ответ: Авторизация Delphi
 
Поскольку никто не ответил правильно, это не некропост. А тема актуальна - поэтому я и написал. В чем же ошибка?
А вот в чем:
* не использован соответствующий компонент (Idhttp client);
* не использован куки- менеджер;
* одной только отсылкой в пост-запросе логина и пароля дело не решить, т.к нужно парсить токен и время создания.
Эти параметры нужно поместить в tstringlist и отослать вместе с постом.
Вообще, правильное общение с сайтом - очень тонкая наука. Нужно сниффить с браузера и уже опираясь на логи сниффера, составлять свой запрос.

RokWeb 30.06.2013 19:10

Ответ: Авторизация Delphi
 
Цитата:

Сообщение от Dependency Walker (Сообщение 262334)
Поскольку никто не ответил правильно, это не некропост. А тема актуальна - поэтому я и написал. В чем же ошибка?
А вот в чем:
* не использован соответствующий компонент (Idhttp client);
* не использован куки- менеджер;
* одной только отсылкой в пост-запросе логина и пароля дело не решить, т.к нужно парсить токен и время создания.
Эти параметры нужно поместить в tstringlist и отослать вместе с постом.
Вообще, правильное общение с сайтом - очень тонкая наука. Нужно сниффить с браузера и уже опираясь на логи сниффера, составлять свой запрос.

Ну тогда, позволю себе заметить, что рекомендовать Indy компоненты для работы с сетью - само по себе грех, учитывая нестабильность и глючность этих компонентов самих по себе.

Dependency Walker 30.06.2013 19:26

Ответ: Авторизация Delphi
 
Цитата:

рекомендовать Indy компоненты для работы с сетью - само по себе грех

Простите меня падре, ибо я согрешил. Лучше Indy вообще ничего нет для работы с сетью. Главное, внимательно читать справку и знать, что ты хочешь сделать.

Админы, настоятельно рекомендую меня забанить. Я думал, что на сайте серьезные люди, а на поверку выяснилось, что школоло. Не все, но многие. Воспитателем в садик я не нанимался.

RokWeb 30.06.2013 19:28

Ответ: Авторизация Delphi
 
Цитата:

Сообщение от Dependency Walker (Сообщение 262336)
Простите меня падре, ибо я согрешил. Лучше Indy вообще ничего нет для работы с сетью. Главное, внимательно читать справку и знать, что ты хочешь сделать.

Админы, настоятельно рекомендую меня забанить. Я думал, что на сайте серьезные люди, а на поверку выяснилось, что школоло. Не все, но многие. Воспитателем в садик я не нанимался.

WinSock... Чистый WinSock, сын мой.

Dependency Walker 30.06.2013 19:30

Ответ: Авторизация Delphi
 
Цитата:

WinSock... Чистый WinSock, сын мой.
Ну конечно. Indy писали школьники с Башорга, не надо позориться, пользоваться их разработками... Надо непременно изобрести свой велосипед.
Быдлокодить Indy не даст; читай справку и пиши так, как там написано. Иначе никак. За это ее многие ругают. ( Печально.

К слову, чтобы в винсоках сделать поддержку редиректов нужно час пилить, хотя в Indy это делается 1 строчкой: HanldeRedirect:=true

Но на вкус и цвет, как известно, ...

RokWeb 30.06.2013 19:36

Ответ: Авторизация Delphi
 
Цитата:

Сообщение от Dependency Walker (Сообщение 262338)
Ну конечно. Indy писали школьники с Башорга, не надо позориться, пользоваться их разработками... Надо непременно изобрести свой велосипед.

Низкий уровень любишь? А чего тогда тут забыл, на форуме Delpih? Пиши на c++.

Задаюсь тем же вопросом, раз Вы такой умный, чего Вы тут забыли?


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot