Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Авторизация с использованием Synapse 
:(
    Опции темы
TechnoMag
Дата 5.11.2010, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.3.2010

Репутация: нет
Всего: нет



Не могу авторизоваться на сайте используя synapse.

Код

      procedure TForm1.CreateHeader;
      begin
          http.Headers.Clear;
          http.Headers.Add('Content-Language: ru');
          http.Headers.Add('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8');
          http.Headers.Add('Accept-Language: ru,en-us;q=0.7,en;q=0.3');
          http.Headers.Add('Accept-CharSet: windows-1251,utf-8;q=0.7,*;q=0.7');
          http.Headers.Add('Accept-Encoding: windows-1251');
          http.Headers.Add('Referer: http://www.avito.ru/profile');
      end;
       
      function TForm1.Login:boolean;
      var
        Data:TStringStream;
        s:String;
      begin
          result:=false;
          HTTP.HTTPMethod('get', 'http://www.avito.ru/profile');
          HTTP.Clear;
          HTTP.Document.Clear;
          boundary := '----------------------------SynapseBoundary';
          HTTP.MimeType:='multipart/form-data; boundary='+boundary;
          HTTP.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)';
          CreateHeader;
       
          Data := TStringStream.Create('');
          S := boundary + CRLF;
          S := S +'Content-Disposition: form-data; name="login"' + CRLF + CRLF;
          S := S + 'login' + CRLF + boundary + CRLF;
          S := S +'Content-Disposition: form-data; name="password"' + CRLF + CRLF;
          S := S + 'password' + CRLF + boundary + CRLF;
          S := S +'Content-Disposition: form-data; name="submit"' + CRLF + CRLF;
          S := S + 'logon' + CRLF + boundary + '--' + CRLF;
       
       
          HTTP.Document.LoadFromStream(Data);}
          HTTP.Document.Write(PAnsiChar(S)^, Length(S));//записали строку
          if HTTP.HTTPMethod('post', 'http://www.avito.ru/profile') then
            begin
              Memo1.Lines.AddStrings(HTTP.Headers);
              Memo1.Lines.AddStrings(HTTP.Cookies);
              Memo1.Text:=Memo1.Text + HTTP.ResultString;
              HTTP.Document.SaveToStream(Data);
              Memo1.Text:=Data.DataString;
              if (pos('/profile/exit', Data.DataString)>0) then
              begin
                ShowMessage('Авторизовались!');
                Result:=true;
              end
              else
              begin
                ShowMessage('Логин или пароль введены неверно!');
                Result:=false;
              end;
            end;
         Data.Free;
      end;

PM MAIL ICQ   Вверх
knyshow
Дата 22.11.2010, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 6.2.2010

Репутация: нет
Всего: 2



ничего не понял из написанного %)

попробуй по аналогии с вот этим кодом:

Код

    threadACTION.HTTP.MimeType:='application/x-www-form-urlencoded';

    post_fields:=TStringStream.Create('user=' + options.GR_username + '&pass=' + options.GR_password + '&entrance=Login');

    threadACTION.HTTP.Document.LoadFromStream(post_fields);

    res := threadACTION.HTTP.HTTPMethod('POST', options.GR_list[options.GR_id].url_auth);

    if res then begin
        if (threadACTION.HTTP.ResultCode = 302) then begin


всегда только так и авторизуюсь везде, где нужен POST, а в твоем примере все как-то заморочено.
PM MAIL   Вверх
TechnoMag
Дата 23.11.2010, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.3.2010

Репутация: нет
Всего: нет



Цитата(knyshow @ 22.11.2010,  22:38)
ничего не понял из написанного %)

попробуй по аналогии с вот этим кодом:

Код

    threadACTION.HTTP.MimeType:='application/x-www-form-urlencoded';

    post_fields:=TStringStream.Create('user=' + options.GR_username + '&pass=' + options.GR_password + '&entrance=Login');

    threadACTION.HTTP.Document.LoadFromStream(post_fields);

    res := threadACTION.HTTP.HTTPMethod('POST', options.GR_list[options.GR_id].url_auth);

    if res then begin
        if (threadACTION.HTTP.ResultCode = 302) then begin


всегда только так и авторизуюсь везде, где нужен POST, а в твоем примере все как-то заморочено.

Ага, так у меня получалось.
Но ведь браузер отправляет multipart/form-data! Разницу чувствуешь?
После многих попыток отправить POST с типом multipart/form-data, напрашивается вывод, что synapse умеет отправлять POST только с типом application/x-www-form-urlencoded.
Но если нужно отправить например файл, то вариант с application/x-www-form-urlencoded не подходит.

Это сообщение отредактировал(а) TechnoMag - 23.11.2010, 15:57
PM MAIL ICQ   Вверх
Mifody
Дата 9.12.2010, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 5.8.2008

Репутация: 2
Всего: 2



Цитата

synapse умеет отправлять POST только с типом application/x-www-form-urlencoded


хм, разве?
Дома погляну исходники, помница мне я довольно успешно отправлял файлы с помошью synapse.
Кстати, запросы снифили? Совпадают с браузером?
PM MAIL WWW   Вверх
TechnoMag
Дата 12.12.2010, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.3.2010

Репутация: нет
Всего: нет



Цитата(Mifody @ 9.12.2010,  17:16)
Цитата

synapse умеет отправлять POST только с типом application/x-www-form-urlencoded


хм, разве?
Дома погляну исходники, помница мне я довольно успешно отправлял файлы с помошью synapse.
Кстати, запросы снифили? Совпадают с браузером?

Снифил, совпадают полностью.
PM MAIL ICQ   Вверх
Ryhor
Дата 15.12.2010, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 15.12.2010

Репутация: нет
Всего: нет



    boundary := '---------------------------xxxxxxxxxxxxxxx';

и  

    Data := TStringStream.Create('');
    S := '--'+boundary + CRLF;
    S := S +'Content-Disposition: form-data; name="login"' + CRLF + CRLF;
    S := S + 'xxx' + CRLF +'--'+boundary + CRLF;
    S := S +'Content-Disposition: form-data; name="password"' + CRLF + CRLF;
    S := S + 'xxx' + CRLF + '--'+boundary + CRLF;
    S := S +'Content-Disposition: form-data; name="submit"' + CRLF + CRLF;
    S := S + 'logon' + CRLF + '--'+boundary + '--' + CRLF;

Это сообщение отредактировал(а) Ryhor - 15.12.2010, 14:54
PM MAIL   Вверх
TechnoMag
Дата 15.12.2010, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.3.2010

Репутация: нет
Всего: нет



Цитата(Ryhor @ 15.12.2010,  13:53)
boundary := '---------------------------xxxxxxxxxxxxxxx';

и  

    Data := TStringStream.Create('');
    S := '--'+boundary + CRLF;
    S := S +'Content-Disposition: form-data; name="login"' + CRLF + CRLF;
    S := S + 'xxx' + CRLF +'--'+boundary + CRLF;
    S := S +'Content-Disposition: form-data; name="password"' + CRLF + CRLF;
    S := S + 'xxx' + CRLF + '--'+boundary + CRLF;
    S := S +'Content-Disposition: form-data; name="submit"' + CRLF + CRLF;
    S := S + 'logon' + CRLF + '--'+boundary + '--' + CRLF;

Спасибо. Заработало. Не думал, что разница в "--" окажется существенной.
PM MAIL ICQ   Вверх
Ryhor
Дата 15.12.2010, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 15.12.2010

Репутация: нет
Всего: нет



Каждый байт играет роль! Помни это!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0458 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.