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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2010, 23:09   #1
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию Неправильная авторизация на сайте?

Пытаюсь авторизоваться на этот сайт, с таким вот кодом
Код:
<form action="http://bt.bashtel.ru/./login.php" method="post">
            Имя: <input name="login_username" size="12" tabindex="1" accesskey="l" type="text">
            Пароль: <input name="login_password" size="12" tabindex="2" type="password">
            <label title="Автоматически входить при каждом посещении"><input name="autologin" value="1" tabindex="3" type="checkbox"> Запомнить</label>&nbsp;

            <input name="login" value="Вход" tabindex="4" type="submit">
         </form>
строка из парсера
Код:
POST /login.php login_username=user&login_password=1230123&login=%C2%F5%EE%E4
Вот так подключаюсь, но когда перехожу на Form'у2 то снова требует авторизации
Код:
function Authorization_bt(Login, Pass: string): string;
var
  Source, Post: TStringList;
  Http: TIdHTTP;
begin
  Http := TIdHTTP.Create(nil);
  Http.HandleRedirects := True;
  Http.Request.UserAgent := 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.5.24 Version/10.53';
  Source := TStringList.Create;
  try
    Source.Text := Http.Get('http://bt.bashtel.ru');
  finally
    if Pos('Вы зашли как:', Source.Text) = 0 then begin
      ShowMessage('авторизуюсь...');
      Post := TStringList.Create;
      Post.Add('login_username='+ Login);
      Post.Add('login_password=' + Pass);
      if Form1.chk1.Checked=false then Post.Add('') else Post.Add('autologin=1');
      Post.Add('login=%C2%F5%EE%E4');
      Source.Text := Http.Post('http://bt.bashtel.ru/./login.php', Post);
      if Pos('Вы зашли как:', Source.Text) <> 0 then
        begin
        //ShowMessage(Пошло!');
        end
      else
        ShowMessage('Нет...');
      Post.Free;
    end else Result := 'Пошло,Пошло!!!!';
    Form1.Hide;
    Form2.show;
  end;
  Source.Free;
end;
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Старый 23.11.2010, 00:19   #2
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Что значит "переходите на Form2"?
У вас авторизация в компоненте Http в функции Authorization_bt. Всё, что за пределами этой процедуры, будет вне авторизации, т.к. Http - локальный компонент
Voody вне форума Ответить с цитированием
Старый 23.11.2010, 14:44   #3
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

как мне тогда на форме2 в компоненте webbrowser1 зайти на страницу которую можно просматривать только после авторизации
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Старый 23.11.2010, 20:07   #4
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Передать куки из TIdHTTP в webbrowser1 это вообще что-то нереальное)
Voody вне форума Ответить с цитированием
Старый 23.11.2010, 21:34   #5
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

Цитата:
Сообщение от Voody Посмотреть сообщение
Передать куки из TIdHTTP в webbrowser1 это вообще что-то нереальное)
Это издевка? Или так нужно сделать. Если нужно сделать то как куки прописываются в webbrowser1?
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Старый 23.11.2010, 22:18   #6
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

это не издевка, это реальность.
главный вопрос как раз
Цитата:
Сообщение от grafgrial Посмотреть сообщение
как куки прописываются в webbrowser1?
раз webbrowser использует движок IE, то и куки использует от IE
Теперь ваша задача найти, как можно засунуть куки в IE
Voody вне форума Ответить с цитированием
Старый 23.11.2010, 23:22   #7
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

Где профессионалы по работе с сетью?
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Старый 23.11.2010, 23:48   #8
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Цитата:
Internet Explorer сохраняет данные cookies в виде отдельных текстовых файлов в папке Cookies, расположенной в профиле пользователя.
пробуйте .
Voody вне форума Ответить с цитированием
Старый 25.11.2010, 13:53   #9
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

не могу понять. куки отсылаются но авторизация не идет
Предоставлю код и данные с http analyzer может кто-то поймет в чем дело
код немного изменил
Код:
function Authorization_bt(Login, Pass: string): string;
var
  Source, Post: TStringList;
  Http: TIdHTTP;
begin
  Http := TIdHTTP.Create(nil);
  Http.HandleRedirects := True;
  http.AllowCookies := true;

  http.Host:='bt.bashtel.ru';
  Http.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6 ( .NET CLR 3.5.30729)';
  HTTP.Request.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
  HTTP.Request.AcceptLanguage:='ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3';
  http.Request.AcceptEncoding:='gzip,deflate';
  HTTP.Request.AcceptCharSet :='windows-1251,utf-8;q=0.7,*;q=0.7';
  Http.Request.RawHeaders.Values['Keep-Alive']:='115';
  HTTP.Request.Connection := 'Keep-Alive';
  http.Request.Referer:='http://bt.bashtel.ru/index.php';
  HTTP.Request.CustomHeaders.Add('Cookie: mycook_showshoutbox=0');
  Http.CookieManager:=TIdCookieManager.Create(Form1.idckmngr1);
  HTTP.Request.ContentType := 'application/x-www-form-urlencoded';
  Http.Request.ContentLength := 56;

  Source := TStringList.Create;
  try
   // Source.Text := Http.Get('http://bt.bashtel.ru');
  finally
    if Pos('Вы зашли как:', Source.Text) = 0 then begin
     // ShowMessage('Не авторизированы, авторизируемся...');
      Post := TStringList.Create;
      Post.Add('login_username='+ Login);
      Post.Add('login_password=' + Pass);
      if Form1.chk1.Checked=true then Post.Add('autologin=1');
      Post.Add('login=Вход');
      Source.Text := Http.Post('http://bt.bashtel.ru/login.php', Post);
      if Pos('Вы зашли как:', Source.Text) <> 0 then
        begin
        //ShowMessage('Авторизация прошла успешно!');
        //HTTP.Request.CustomHeaders.Clear;
        Http.Get('http://bt.bashtel.ru/index.php');
        Form1.Hide;
        Form2.show;
        Form2.mmo1.Text:=Source.Text;
        Form2.mmo2.Text:=Http.Response.RawHeaders.GetText;
        end
      else
        ShowMessage('Авторизироваться не вышло...');
      Post.Free;
    end else Result := 'Мы авторизированы!';
  end;
  Source.Free;
end;
При работе в браузере

01sait.jpg
______________________
02sait.jpg

В программе (почему то 3 запроса)

01my.jpg
______________________
02my.jpg
______________________
03my.jpg
Помог, нажми весы слева

Последний раз редактировалось grafgrial; 25.11.2010 в 13:55.
grafgrial вне форума Ответить с цитированием
Старый 25.11.2010, 16:06   #10
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

У вас три запроса, потому что после первого происходит переадресация. Уберите второй запрос
Voody вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация на сайте doniyor Работа с сетью в Delphi 1 18.04.2010 13:54
Авторизация на сайте Kengie Помощь студентам 2 23.03.2010 21:28
Авторизация на сайте Niklan Общие вопросы Delphi 1 07.11.2009 00:39
Авторизация на сайте Abadd0N Работа с сетью в Delphi 14 10.06.2009 12:31
Авторизация на сайте MultiBit Работа с сетью в Delphi 6 13.03.2009 18:45