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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2012, 21:01   #1
SmoK777
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 27
По умолчанию Mixnet.pro

Пишу небольшую прогу для сайта mixnet.pro, и уже застрял на авторизации... Вот под процедуры:
PHP код:
procedure TForm1.Auth(SenderTObject);
begin
str
:=str +1;
params:=TStringList.Create;
params.Add('email='+sEdit1.Text);
params.Add('password='+sEdit2.Text);
params.Add('log_in=');
s:=http.Post('http://mixnet.pro',params);
if 
Pos('Профиль',s)>0 then
  sMemo1
.Lines.Add(IntToStr(str)+'.'+'Успешная авторизация!')
else 
begin
  sMemo1
.Lines.Add(IntToStr(str)+'.'+'Ошибка. Проверите правельность написания логина/пароля');

end;
end
Предварительно:
PHP код:
http:=Tidhttp.Create(self);
freeze:=Tidantifreeze.Create(self);
cookie:=Tidcookiemanager.Create(self);
http.CookieManager:=cookie;
http.HandleRedirects:=true;
http.AllowCookies:=true;
http.Request.UserAgent:='Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19';
freeze.Active:=true;
freeze.ApplicationHasPriority:=true;
freeze.Process
И что-то непроходит. Я так понел что тут редирект, уже второй день мучаюсь и не как не могу авторизироваться! Если кто решит мне помочь, то пишите, дам тест акк, или сами зарегаетесь. Заранее спс...
SmoK777 вне форума Ответить с цитированием
Старый 19.12.2012, 17:52   #2
SmoK777
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 27
По умолчанию

апапапапапап
SmoK777 вне форума Ответить с цитированием
Старый 19.12.2012, 20:08   #3
SmoK777
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 27
По умолчанию

Внимание, кто поможет , тому дам 100рублей
SmoK777 вне форума Ответить с цитированием
Старый 19.12.2012, 21:24   #4
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

Снифером запросы смотрели?
Lardes вне форума Ответить с цитированием
Старый 19.12.2012, 21:36   #5
SmoK777
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 27
По умолчанию

смотрели...
SmoK777 вне форума Ответить с цитированием
Старый 20.12.2012, 17:46   #6
SmoK777
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 27
По умолчанию

ну чё, за 100рублей никто помочь не хочет?
SmoK777 вне форума Ответить с цитированием
Старый 20.12.2012, 23:36   #7
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

Код:
//функция возвращает True при успешной авторизации
function IsLoginToMixnet(ALogin, APassword: string): Boolean;
var
  HTTP: THTTPSend;
  S, Profile: string;
//  FSourceHTML: string;
begin
  Result := False;

  HTTP := THTTPSend.Create;  //создаем класс THTTPSend
  try
    HTTP.Protocol := '1.1';  //выставляем протокол
    //маскируемся под Firefox
    HTTP.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0';

    HTTP.Headers.Add('Referer: http://mixnet.pro/');
    S := Format('email=%s&password=%s&log_in=', [ALogin, APassword]);  //строчка для POST-запроса
    HTTP.Document.Write(PChar(S)^, Length(S));  //записываем строчку S в тело документа
    HTTP.MimeType := 'application/x-www-form-urlencoded';

    //если удалось отправить данные, то
    if HTTP.HTTPMethod('POST', 'http://mixnet.pro') then
    begin
      HTTP.Document.Clear;  //очищаем документ HTTP
      HTTP.Headers.Clear;  //очищаем заголовки HTTP
      HTTP.Protocol := '1.1';
      HTTP.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11';
      if HTTP.HTTPMethod('GET', 'http://mixnet.pro') then
      begin
        HeadersToList(HTTP.Headers);  //приводим заговки в читабельный вид
        if Trim(HTTP.Headers.Values['Location']) <> '' then
        begin
          Profile := 'http://mixnet.pro' + Trim(HTTP.Headers.Values['Location']);  //назначаем страницу профиля
          HTTP.Document.Clear;
          HTTP.Headers.Clear;
          HTTP.Protocol := '1.1';
          HTTP.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11';
          if HTTP.HTTPMethod('GET', Profile) then
          begin      
            Result := True;
            //для получения исходного кода HTML-страницы
//            FSourceHTML := UTF8Decode(ReadStrFromStream(
//              HTTP.Document, HTTP.Document.Size));
          end;
        end;
      end;
    end;
  finally
    FreeAndNil(HTTP);  //освобождаем HTTP, без этого никак
  end;
end;
Применение:
Код:
procedure TForm1.LoginButtonClick(Sender: TObject);
begin
  //сохранение в виде "email@mail.ru;password - успешно авторизовались"
  //или
  //"email@mail.ru;password - не авторизовались"

  if IsLoginToMixnet(LoginEdit.Text, PasswordEdit.Text) then
    Memo1.Text := Format('%s;%s - успешно авторизовались', [LoginEdit.Text, PasswordEdit.Text])
//    ShowMessage(Format('%s;%s - успешно авторизовались', [LoginEdit.Text, PasswordEdit.Text]))
  else
    Memo1.Text := Format('%s;%s - не авторизовались', [LoginEdit.Text, PasswordEdit.Text]);
//    ShowMessage(Format('%s;%s - не авторизовались', [LoginEdit.Text, PasswordEdit.Text]));
end;
Lardes вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IDA Pro VintProg Софт 16 25.06.2010 19:32
Pro akrobatov FCShadow Помощь студентам 2 22.02.2010 15:39
Pro studentov FCShadow Помощь студентам 3 22.02.2010 15:39