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

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

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

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

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

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

Здравствуйте! Помогите решить проблемму с куки. Дело в том, что при авторизации куки не отправляются, из-за этого я не могу выполнять дальнейшие передвижения по сайту. Запрос отсылаю на zhyk.ru.
Использую indy 10.5
На других сайтах куки отправляются.
Кукименеджер подключен к Idhttp, все параметры выставил как пологается.

Помогите, в чем может быть проблемма?
Pearl777 вне форума Ответить с цитированием
Старый 08.03.2013, 18:35   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Проблема кроется в Indy (наверное)
Вот из-за таких непонятных происшествий и перешел на Synapse.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 08.03.2013, 19:00   #3
Pearl777
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 171
По умолчанию

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

Может быть покажите проблемный код?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 08.03.2013, 19:36   #5
Pearl777
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 171
По умолчанию

Код:
var
LoginInfo: TStringList;
Response: TStringStream;
begin
LoginInfo := TStringList.Create;
Response := TStringStream.Create('');
try
    LoginInfo.Add('vb_login_username='+sedit1.text);
    LoginInfo.Add('cookieuser=1');
    LoginInfo.Add('vb_login_password='+sedit2.Text);
    LoginInfo.Add('s=');
    LoginInfo.Add('securitytoken=guest');
    LoginInfo.Add('do=login');
    LoginInfo.Add('vb_login_md5password=');
    LoginInfo.Add('vb_login_md5password_utf=');
    idhttp1.Post('http://zhyk.ru/forum/login.php?do=login',LoginInfo, Response);
//Дальше подобные post и get запросы//
except
end;
Pearl777 вне форума Ответить с цитированием
Старый 08.03.2013, 20:38   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Авторизация на жуке осложнена каптчей.
Вот так можно авторизоваться на нашем форуме (но для жука этого мало):
Код:
uses httpsend, SynaCode, synautil;

...

var
  Form1: TForm1;
  HTTP: THTTPSend;

const
  login = 'login';
  password = 'pass';

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Res: boolean;
  s: TStringList;
  str, md5pass: string;
begin
  md5pass := StrToHex(MD5(password));
  s := TStringList.Create;
  try
    HTTP.Headers.Clear;
    HTTP.Document.Clear;
    HTTP.MimeType := 'application/x-www-form-urlencoded';
    str := 'vb_login_username=' + EncodeUrl(login) +
        '&cookieuser=1&vb_login_password=&s=&securitytoken=guest&do=login&vb_login_md5password=' +
        md5pass + '&vb_login_md5password_utf=' + md5pass;
    HTTP.Document.Write(pointer(str)^, length(str));
    Res := HTTP.HTTPMethod('POST', 'http://zhyk.ru/forum/login.php?do=login');
    if Res then
    begin
      s.LoadFromStream(HTTP.Document);
      if pos('Спасибо, что зашли', s.Text) <> 0 then// для жука мало
        showmessage('Добро пожаловать')
      else
        showmessage('Пароль неверный');
    end;
  finally
    s.Free;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  HTTP := THTTPSend.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  HTTP.Free;
end;

end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 08.03.2013, 21:02   #7
Pearl777
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 171
По умолчанию

BDA, С авторизацией у меня все впорядке. Спарсил все значение, вывел капчу, закодировал пароль в md5. Ну короче авторизация проходит успешно, но вот только без куки.

Последний раз редактировалось Pearl777; 09.03.2013 в 10:43.
Pearl777 вне форума Ответить с цитированием
Старый 09.03.2013, 13:55   #8
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

попробуй это добавь
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  IdHTTP1.Get('http://'+сайт);
  for i:=0 to IdCookieManager1.CookieCollection.Count-1 do
    Memo1.Lines.Add(IdCookieManager1.CookieCollection[i].CookieName+'='+IdCookieManager1.CookieCollection[i].Value);
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  IdHTTP1.CookieManager:=IdCookieManager1;
end;
мне когда то помогло
bulldog5293 вне форума Ответить с цитированием
Старый 09.03.2013, 14:29   #9
Pearl777
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 171
По умолчанию

Цитата:
Сообщение от bulldog5293 Посмотреть сообщение
попробуй это добавь
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  IdHTTP1.Get('http://'+сайт);
  for i:=0 to IdCookieManager1.CookieCollection.Count-1 do
    Memo1.Lines.Add(IdCookieManager1.CookieCollection[i].CookieName+'='+IdCookieManager1.CookieCollection[i].Value);
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  IdHTTP1.CookieManager:=IdCookieManager1;
end;
мне когда то помогло


Спасибо, но не помогло.

Помогите все это переписать на синапс.
Код:
var
LoginInfo,LoginInfo2: TStringList;
html:WideString;
Response,Response2: TStringStream;
pic: TJPEGImage;
pre: TMemoryStream;
md5pass,hash,capcha,dir,capurl,pass: string;
i: integer;
begin
LoginInfo := TStringList.Create;
Response := TStringStream.Create('');
LoginInfo2 := TStringList.Create;
Response2 := TStringStream.Create('');
pic:= TJPEGImage.Create;
pre:= TMemoryStream.Create;
begin
try
    Http := TIdHTTP.Create(Self);
    Cookie := TidCookieManager.Create(Http);
    Http.AllowCookies := true;
    Http.CookieManager := Cookie;
    Http.HandleRedirects := true;

http.request.useragent := 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.7.62 Version/11.01';
http.request.host := 'zhyk.ru';
http.request.Accept := 'text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1';
http.request.AcceptLanguage := 'ru-RU,ru;q=0.9,en;q=0.8';
Http.Request.AcceptCharSet:='windows-1251';

    LoginInfo.Add('vb_login_username='+sedit1.text);
    LoginInfo.Add('cookieuser=1');
    LoginInfo.Add('vb_login_password='+sedit2.Text);
    LoginInfo.Add('s=');
    LoginInfo.Add('securitytoken=guest');
    LoginInfo.Add('do=login');
    LoginInfo.Add('vb_login_md5password=');
    LoginInfo.Add('vb_login_md5password_utf=');
    http.Post('http://zhyk.ru/forum/login.php?do=login',LoginInfo,Response);


    hash := ParsToString('<input id="hash" type="hidden" name="humanverify[hash]" value="', Response.DataString, '" />');
    capcha := ParsToString('<script type="text/javascript" src="http://api.recaptcha.net/challenge?k=', Response.DataString, '">');
    html := http.Get('http://api.recaptcha.net/challenge?k='+capcha);
    capurl := Pars('challenge :', html, ',');

 http.Get('http://www.google.com/recaptcha/api/image?c='+capurl, pre);
 pre.Position := 0;
 pic.LoadFromStream(pre);
 form2.Image1.Picture.Assign(pic);
 form2.showmodal;

md5pass := StrToHex(MD5(sedit2.text));
pass:=md5pass;

    LoginInfo2.Add('humanverify[hash]='+hash);
    LoginInfo2.Add('recaptcha_challenge_field='+capurl);
    LoginInfo2.Add('recaptcha_response_field='+form2.sedit1.Text);
    LoginInfo2.Add('s=');
    LoginInfo2.Add('securitytoken=guest');
    LoginInfo2.Add('do=dologin');
    LoginInfo2.Add('vb_login_password='+pass);
    LoginInfo2.Add('vb_login_username='+sedit1.text);
    LoginInfo2.Add('url=http://zhyk.ru/');
    LoginInfo2.Add('cookieuser=1');
    LoginInfo2.Add('postvars=');
    LoginInfo2.Add('logintype=');
    LoginInfo2.Add('cssprefs=');
    http.Post('http://zhyk.ru/forum/login.php?do=dologin',LoginInfo2, Response2);
    dir := ParsToString('<p class="smallfont"><a href="', Response2.DataString, '">');
    http.Get(dir);
    if pos('Спасибо, что зашли, '+sedit1.Text, Response2.DataString) <> 0 then
    ShowMessage('Успешный вход!')
    else
    ShowMessage('Неверный пароль!!!');

  except
LoginInfo.Free;
Response.Free;
LoginInfo2.Free;
Response2.Free;
pic.Free;
pre.Free;
  end;

В synapse не силен, а вернее вообще не знаю что да как там.
Pearl777 вне форума Ответить с цитированием
Старый 14.03.2013, 00:14   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Вроде авторизуюсь
Вложения
Тип файла: zip авторизация zhyk.zip (628.6 Кб, 32 просмотров)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация Алекс Миско БД в Delphi 6 15.06.2012 15:19
авторизация Жека_ Общие вопросы C/C++ 3 11.10.2011 01:47
Авторизация trad C++ Builder 3 13.01.2011 01:27
Обычная авторизация или авторизация на уровне браузера? calugin Безопасность, Шифрование 0 13.01.2011 00:34
Авторизация doniyor JavaScript, Ajax 1 07.11.2009 21:13