Главная Главная страница форума Регистрация Вход
Новые сообщения Участники форума Правила форума Поиск
Страница 1 из 11
Модератор форума: Ekz 
Форум » Все о Delphi » Интернет и сети » Авторизация на сайтах использующих ASP.NET
Авторизация на сайтах использующих ASP.NET
acerДата: Четверг, 29.03.2012, 18:50 | Сообщение # 1
Ранг 1
Группа: Пользователи
Сообщений: 1
Награды: 0
Репутация: 0
Статус: Offline
Здравствуйте, мне необходимо, чтобы программа автоматически авторизировалась на сайте, на странице
http://login.shodennik.ua/defult.aspx, тоесть передавала такую строку:'xss=45f528ba21&name=kasyanov_igor%40inbox.ru&pass=mypass&login=%D0%A3%D0%B2%D1%96%D0%B9%D1%82%D0%B8'
сначало, я попробовал использовать элементы indy misc
[DELPHI]procedure TForm1.Button1Click(Sender: TObject);
var
Http : TidHttp;
CM : TidCookieManager;
Data : TStringList;
StrPage, UserID, UserName : String;
i : integer;
begin
try
Http := TIdHTTP.Create(Self);
Data := TStringList.Create;
CM := TidCookieManager.Create(Http);
Http.AllowCookies := true;
Http.CookieManager := CM;
Http.HandleRedirects := true;

Http.Request.Host:='login.shodennik.ua';
Http.Request.UserAgent:='Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1';
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.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7';
Http.Request.Referer:='http://shodennik.ua/';
// Http.Request.acceptEncoding:='gzip, deflate';

Data.Add('xss=45f528ba21');
Data.Add('name=kasyanov_igor%40inbox.ru');
Data.Add('pass=mypass');
Data.Add('login=%D0%A3%D0%B2%D1%96%D0%B9%D1%82%D0%B8');
StrPage := Http.post('http://www.login.shodennik.ua/default.aspx', Data);
finally
Data.Free;
CM.Free;
Http.Free;
end;

if Pos('<input class="logoutlj_hidden" id="user" name="user" type="hidden" value="'+Edit1.Text,StrPage) <> 0 then
ShowMessage('Авторизация прошла успешно')
else
ShowMessage('Авторизация провалилась');

Memo1.Lines.Text := StrPage;
end;[/DELPHI]
но в таком случае при нажатии кнопки появляеться ошибка "socket error # 110004"
потом я попробовал использовать библиотеку synapse:
[DELPHI]procedure TForm1.Button1Click(Sender: TObject);
var Data: TStringStream;
HTTPSend: THTTPSend;
StrPage,s:string;
n,x:integer;
_URL, Flags, TargetFrameName, PostData, Headers: Olevariant;
begin
HTTPSend:=THTTPSend.Create;
HTTPSend.KeepAlive:=true;
HTTPSend.KeepAliveTimeout:=300;
HTTPSend.TargetHost:='login.shodennik.ua';
HTTPSend.TargetPort:='80';
HTTPSend.Protocol:='1.1';
HTTPSend.MimeType:='application/x-www-form-urlencoded';
Data:=TStringStream.Create('');
Data.WriteString('xss=45f528ba21&'+'&');
Data.WriteString('name=kasyanov_igor%40inbox.ru&'+'&');
Data.WriteString('pass=mypass&'+'&');
Data.WriteString('login=%D0%A3%D0%B2%D1%96%D0%B9%D1%82%D0%B8');
//data.WriteString('xss=45f528ba21&name=kasyanov_igor%40inbox.ru&pass=degustator&login=%D0%A3%D0%B2%D1%96%D0%B9%D1%82%D0%B8');
//авторизуемся на сайте
HTTPSend.Document.LoadFromStream(Data);
//showmessage(data.DataString);
HTTPSend.HTTPMethod(data.DataString,'http://www.login.shodennik.ua/default.aspx');

{//очищаем заголовки и тело документа
HTTPSend.Document.Clear;
HTTPSend.Headers.Clear;

{анализируем ответ сервера}

idHttp1.CookieManager := IdCookieManager1;
HttpGetText('http://shodennik.ua', Memo1.Lines);
if pos('pageAuth',memo1.text)<>0 then showmessage('ok');
if pos('pageAnonym',memo1.text)<>0 then showmessage('no');
end;

[/DELPHI]
в таком случае на сайт данные отправляються вроде верно, но при проверке (я загружаю страницу shodennik.ua) загружаеться страница не авторизированного пользователя, может не правильно проверяю.
Также пробовал использовать элемент iehttp, но сайт при этом также возвращает страницу неавторизированного пользователя:
[DELPHI]
procedure TForm1.BitBtn1Click(Sender: TObject);
var iehttp1: TIEHTTP;
begin
iehttp1 := TIEHTTP.Create(nil);

iehttp1.username := 'kasyanov_igor%40inbox.ru';
iehttp1.password := 'mypass';

iehttp1.ExecuteURL('http://login.shodennik.ua/default.aspx');

showmessage(iehttp1.sl.text);
end;
[/DELPHI]
Может кто подскажет, где ошибка, или может надо по другому делать.
 
Форум » Все о Delphi » Интернет и сети » Авторизация на сайтах использующих ASP.NET
Страница 1 из 11
Поиск:

Copyright DelphiDevelop.ru © 2008-2018
Хостинг от uCoz