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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2013, 12:43   #1
Pearl777
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 171
По умолчанию Авторизация TurboBit

Здравствуйте! Может кто подсказать, как реализовать авторизацию на turbobit.
Пробовал таким способом:
Код:
var
  StrPage,Url:string;
  Log:TStringList;
  html : WideString;
begin
IdHTTP1.CookieManager:=IdCookiemanager1;
IdHTTP1.AllowCookies:=true;
IdHTTP1.HandleRedirects:=true;
url:='http://turbobit.net/user/login';
Log:=TStringList.Create;
Log.Add('user[login]='+Edit1.Text);
Log.Add('user[pass]='+Edit2.Text);
Log.Add('user[submit]=Войти');
StrPage:=IdHTTP1.Post(Url,Log);
memo1.Text:=StrPage;
Log.Free;
if Pos('logout',StrPage)<>0 then
ShowMessage('Добро пожаловать')
else
ShowMessage('Пароль неверный ! ! !');
Пишет пароль неверный. При проверке через HttpAnalyzer заметил что куки не отправляются, но в программе они подключены. Стоит 10 версия indy.

Последний раз редактировалось Stilet; 27.01.2013 в 13:10.
Pearl777 вне форума Ответить с цитированием
Старый 27.01.2013, 13:22   #2
AmbaQ
Пользователь
 
Аватар для AmbaQ
 
Регистрация: 23.12.2009
Сообщений: 47
По умолчанию

Цитата:
Сообщение от Pearl777 Посмотреть сообщение
...При проверке через HttpAnalyzer заметил что куки не отправляются, но в программе они подключены. Стоит 10 версия indy.
У меня аналогичная проблема, отписывался в теме, надеюсь, что ответят, если найдёшь решение, отпиши =)
AmbaQ вне форума Ответить с цитированием
Старый 27.01.2013, 13:48   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Delphi 2010 Indy 10.5.5 - все работает.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  StrPage, Url: string;
  Log: TStringList;
begin
  IdHTTP1.AllowCookies := true;
  IdHTTP1.HandleRedirects := true;
  Url := 'http://turbobit.net/user/login';
  Log := TStringList.Create;
  Log.Add('user[login]=' + { Edit1.Text } 'b2141395@rmqkr.net');//ящик фиктивный
  Log.Add('user[pass]=' + { Edit2.Text } '12345678');
  Log.Add('user[submit]=Войти');
  StrPage := IdHTTP1.Post(Url, Log);
  Log.Free;
  if Pos('logout', StrPage) <> 0 then
    ShowMessage('Добро пожаловать')
  else
    ShowMessage('Пароль неверный!');
end;
Совет - перебирайтесь на Synapse.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 27.01.2013, 16:56   #4
Pearl777
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 171
По умолчанию

BDA, Подключил библиотеку Synapse. Подскажите как правильно сформулировать запрос на авторизацию?
Pearl777 вне форума Ответить с цитированием
Старый 27.01.2013, 17:43   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  HTTP: THTTPSend;
  Res: boolean;
  s: TStringStream;
  str: string;
begin
  HTTP := THTTPSend.Create;
  s := TStringStream.Create;
  try
    s.WriteString('user[login]=' +
      { Edit1.Text } 'b2141395@rmqkr.net' + '&user[pass]=' +
      { Edit2.Text } '12345678' + '&user[submit]=' + utf8encode('Войти'));
    HTTP.Document.LoadFromStream(s);
    HTTP.Headers.Clear;
    HTTP.MimeType := 'application/x-www-form-urlencoded';
    Res := HTTP.HTTPMethod('POST', 'http://turbobit.net/user/login');
    if Res then
    begin
      HTTP.Headers.Clear;
      Res := HTTP.HTTPMethod('Get', 'http://turbobit.net/');
      if Res then
      begin
        s.LoadFromStream(HTTP.Document);
        str := utf8decode(s.DataString);
        if Pos('logout', str) <> 0 then
          ShowMessage('Добро пожаловать')
        else
          ShowMessage('Пароль неверный!');
      end;
    end;
  finally
    HTTP.Free;
    s.Free;
  end;
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 27.01.2013, 18:18   #6
Pearl777
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 171
По умолчанию

Код:
  s := TStringStream.Create;
Этот параметр при запуске выделяется красным.


Сделал вот так:
Код:
  s := TStringStream.Create('');
но теперь пишет на LoadFromStream (Undeclared identifier)

Последний раз редактировалось Pearl777; 27.01.2013 в 18:24.
Pearl777 вне форума Ответить с цитированием
Старый 27.01.2013, 18:32   #7
Pearl777
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 171
По умолчанию

Все с кодом вроде бы разобрался. Но по прежнему пишет неверный пароль.
Pearl777 вне форума Ответить с цитированием
Старый 27.01.2013, 19:11   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
uses SynaCode;
...
procedure TForm1.Button1Click(Sender: TObject);
var
  HTTP: THTTPSend;
  Res: boolean;
  s: TStringStream;
  str: string;
begin
  HTTP := THTTPSend.Create;
  s := TStringStream.Create;
  try
    s.WriteString(EncodeUrl('user[login]=' +
        { Edit1.Text } 'b2141395@rmqkr.net' + '&user[pass]=' +
        { Edit2.Text } '12345678' + '&user[submit]=' + utf8encode('Войти')));
    HTTP.Document.LoadFromStream(s);
    HTTP.Headers.Clear;
    HTTP.MimeType := 'application/x-www-form-urlencoded';
    Res := HTTP.HTTPMethod('POST', 'http://turbobit.net/user/login');
    if Res then
    begin
      if pos('location: /login', AnsiLowerCase(HTTP.Headers.Text)) > 0 then
        ShowMessage('Превышен лимит входов')
      else
      begin
        HTTP.Headers.Clear;
        Res := HTTP.HTTPMethod('Get', 'http://turbobit.net/');
        if Res then
        begin
          s.LoadFromStream(HTTP.Document);
          str := utf8decode(s.DataString);
          if pos('logout', str) <> 0 then
            ShowMessage('Добро пожаловать')
          else
            ShowMessage('Пароль неверный!');
        end;
      end;
    end;
  finally
    HTTP.Free;
    s.Free;
  end;
end;
У меня не кодируется также символ @, но это не мешает авторизации.
На сайте есть ограничение на количество неправильных входов. Запустите новый код. Если программа выдаст 'Превышен лимит входов', то нужно вводить каптчу.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 27.01.2013 в 20:25.
BDA вне форума Ответить с цитированием
Старый 27.01.2013, 20:03   #9
Pearl777
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 171
По умолчанию

Вот что пишет [Error] Unit1.pas(56): Undeclared identifier: 'SaveToFile'
Pearl777 вне форума Ответить с цитированием
Старый 27.01.2013, 20:26   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Сообщение от Pearl777 Посмотреть сообщение
Вот что пишет [Error] Unit1.pas(56): Undeclared identifier: 'SaveToFile'
Забыл убрать эту строку при отладке.
Вам она не нужна.
Хотя, странно, что у меня все компилируется, а у Вас нет.
Какая у Вас версия Дельфи?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация Anton PHP 7 25.05.2012 23:54
Обычная авторизация или авторизация на уровне браузера? calugin Безопасность, Шифрование 0 13.01.2011 00:34
Авторизация bulldog5293 Работа с сетью в Delphi 15 17.07.2010 22:08
авторизация. DeDoK Работа с сетью в Delphi 3 02.07.2010 17:00
Авторизация Flippp Общие вопросы C/C++ 0 08.12.2009 11:07