Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Авторизация через Http.Post (https://forum.antichat.xyz/showthread.php?t=204353)

ArkNet 16.05.2010 08:45

Авторизация через Http.Post
 
Если не сложно киньте рабочий исходный код авторизации вконтакте желательно через метод Post и с комментами.
Вот что получилось.

procedure TForm1.Button1Click(Sender: TObject);
var
list: TStringList;
begin
list:=TStringList.Create();
list.Add('u=1');
list.Add('success_url=');
list.Add('fail_url=');
list.Add('try_to_login=1');
list.Add('email='+Edit1.Text);
list.Add('pass='+Edit2.Text);
try
Memo1.Lines.Text:=IdHTTP1.Post('http://login.vk.com/?act=login',list);
finally
list.Free;
IdHTTP1.Disconnect;
end;




После отправки получаю в Memo1

<html>
<head>
<meta http-equiv='content-type' content='text/html; charset=windows-1251' />
</head>
<body onload="document.getElementById('l').submit();">
<form id='l' method='post' action='http://vkontakte.ru/login.php'>
<input type='hidden' name='s' id='s' value='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxx' />
<input type='hidden' name='op' id='op' value='slogin' />
<input type='hidden' name='redirect' id='redirect' value='1' />
<input type='hidden' name='expire' id='expire' value='0' />
<input type='hidden' name='to' id='to' value='' />
</form>
</body>
</html>


Нужна помощь....Знающих людей. :confused:

wolmer 16.05.2010 08:49

тут посмотри решение проблемы:
forum.antichat.ru/thread165316.html

если нужен готовый код -> пробуй это: forum.antichat.ru/thread204126.html

ArkNet 16.05.2010 09:34

Спасибо почти розобрался...

Berman 16.05.2010 09:40

Я юзаю такие настройки для авторизации. (IdHttp)
http://clip2net.com/clip/m39024/1273...-clip-71kb.jpg
На форме кукименеджер должен быть привязан к idhttp, handleredirects ---> true
AllowCookies ---> True;

код Делфи
Цитата:


procedure Tform1.Button1Click(Sender: TObject);
var
uns: String;
s: String;
outfo: TStringList;
begin
pass := StringReplace(edit2.text, ' ', '+', [rfReplaceAll, rfIgnoreCase]);
outfo := TStringList.Create;
idhttp1.Get('http://vkontakte.ru/login.php?op=a_login_attempt');
outfo.Add('act=login');
outfo.Add('email='+edit1.text);
outfo.Add('pass='+pass);
try
uns:=UTF8toANSI(idhttp1.post('http://login.vk.com/', outfo));
s:=copy(uns, 286, 56);
memo1.Lines.add('Cookies: '+s);
IdCookieManager1.AddCookie('remixsid='+s+ '; path=/; ','vkontakte.ru');
finally
if s = '' then
begin
//Неудачно
end
else
begin
//Залогплись

Berman 16.05.2010 09:41

Тут есть обработка исключений типа русского пароля и пароля с пробелами :)

ArkNet 16.05.2010 11:03

memo1.Lines.add('Cookies: '+s);
IdCookieManager1.AddCookie('remixsid='+s+ '; path=/; ','vkontakte.ru');
finally
if s = '' then


Можно по подробней эту часть кода обьяснить.

Nelzone 16.05.2010 11:40

Цитата:

Сообщение от ArkNet
memo1.Lines.add('Cookies: '+s);
IdCookieManager1.AddCookie('remixsid='+s+ '; path=/; ','vkontakte.ru');
finally
if s = '' then

begin
Label1.caption:='Good';
end
else
begin
Label1.caption:='bad';
end;


Можно по подробней эту часть кода обьяснить.

добовляет лину мемо куки,s String,remixsid айди вк,в дир
vkontakte.ru..
дальше

begin
Label1.caption:='Неудачно';
end
else
begin
Label1.caption:='Залогнлись';
end;

ArkNet 16.05.2010 11:53

IdCookieManager1.AddCookies('remixsid='+s+ '; path=/; ','vkontakte.ru');

вот эта строчка что дает?
при компиляиции тут вылетает

Incompatible type: 'TIdCookieManedger' and 'String'

M_script_ 16.05.2010 12:21

Цитата:

Сообщение от Berman
Тут есть обработка исключений типа русского пароля и пароля с пробелами :)

Если в пароле будет '+', то аккаунт не авторизуется.

ArkNet 16.05.2010 12:36

Для создания простого чекера акаунтов даже хватит получения кукис.
Если получил 54 значную строку значить валидный.... :rolleyes:


А для того чтоб получить исходный код самой страницы с анкетой что надо? :confused:

И есть ли гдето полная инфа на русском языке про коммпонент Idhhttp желательной с картинками и с видео. :confused:

need_million 16.05.2010 12:47

используй httpwebrequest инфы по нему много

Berman 16.05.2010 21:03

Ты что?
http://vk1000.ru/vkontakte.jpg
Конечно авторизуется. Так и нужно!

M_script_ 16.05.2010 21:09

Цитата:

Сообщение от Berman
Ты что?
http://vk1000.ru/vkontakte.jpg
Конечно авторизуется. Так и нужно!

Нет. Проверь сам.

HakaR 16.05.2010 21:22

Цитата:

Сообщение от ArkNet
А для того чтоб получить исходный код самой страницы с анкетой что надо? :confused:

idhttp1.Request.CustomHeaders.Add('Cookie: remixsid=' + s);
str := idhttp1.Get('http://vkontakte.ru/profile.php');

Berman 16.05.2010 21:26

Всё работает.
http://vk1000.ru/vkontakte.jpg

M_script_ 16.05.2010 22:26

Цитата:

Сообщение от Berman
Всё работает.

У тебя же в примере '+' отправляется без urlencode, то есть, как пробел

ArkNet 16.05.2010 22:38

Все получилось в Memo1 выводит код страницы.
Настройки IdHttp использовал как и Berman
Вот код.


procedure TForm1.Button1Click(Sender: TObject);
var
s,pass,str,uns: String;//переменный типа стринг
outfo: TStringList; // перменная типа стринглист
begin
pass := StringReplace(edit2.text, ' ', '+', [rfReplaceAll, rfIgnoreCase]);
outfo := TStringList.Create; //создаем пост перемменую
idhttp1.Get('http://vkontakte.ru/login.php?op=a_login_attempt'); //забераем исходный текст адресса
outfo.Add('act=login'); //создаем пост запрос
outfo.Add('email='+edit1.text); //создаем пост запрос
outfo.Add('pass='+pass); //создаем пост запрос
try
uns:=UTF8toANSI(idhttp1.post('http://login.vk.com/', outfo)); //отправляем пост запро на нужный адресс
s:=copy(uns, 286, 56); //вытягиваем 56 значную строку
finally
idhttp1.Request.CustomHeaders.Add('Cookie: remixsid=' + s); //отправляем запрос
str := idhttp1.Get('http://vkontakte.ru/profile.php'); //получаем исходник указаного адресса
Memo1.Text:=str; // Выводим в мемо исходный код страницы више указаной
IdHTTP1.Disconnect; // дисконект
end
end;



Теперь пару вопросов....
1. Что мы делаем тут idhttp1.Request.CustomHeaders.Add('Cookie: remixsid=' + s);
2. Что мы делаем тут pass := StringReplace(edit2.text, ' ', '+', [rfReplaceAll, rfIgnoreCase]);
3. Чтоб ввойти на другой аккаунт надо писать IdHTTP1.Disconnect;
4. Зачем это надо
memo1.Lines.add('Cookies: '+s);
IdCookieManager1.AddCookie('remixsid='+s+ '; path=/; ','vkontakte.ru');
Всем спасибо оказал помощь.... :rolleyes:

HakaR 17.05.2010 09:49

Цитата:

Сообщение от ArkNet
Теперь пару вопросов....
1. Что мы делаем тут idhttp1.Request.CustomHeaders.Add('Cookie: remixsid=' + s);
2. Что мы делаем тут pass := StringReplace(edit2.text, ' ', '+', [rfReplaceAll, rfIgnoreCase]);
3. Чтоб ввойти на другой аккаунт надо писать IdHTTP1.Disconnect;
4. Зачем это надо
memo1.Lines.add('Cookies: '+s);
IdCookieManager1.AddCookie('remixsid='+s+ '; path=/; ','vkontakte.ru');
Всем спасибо оказал помощь.... :rolleyes:

1. Добавляем куки (можешь вообще не юзать куки менеджер).
4. Можешь убрать эти строчки.

ArkNet 17.05.2010 22:25

При использование метода Get исходный код отображается неправильно
пример
<div id='coins_left'>? ??? <b>0</b> ????????????????
Заместь знаков вопроса должно писать "неиспользованных голосов."
Все символы кирилицы превратились в знаки вопроса, как это испарвить?


Время: 18:02