Авторизация через Http.Post

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by ArkNet, 16 May 2010.

  1. ArkNet

    ArkNet Banned

    Joined:
    15 May 2010
    Messages:
    26
    Likes Received:
    1
    Reputations:
    0
    Если не сложно киньте рабочий исходный код авторизации вконтакте желательно через метод 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='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' />
    <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:
     
  2. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    тут посмотри решение проблемы:
    forum.antichat.ru/thread165316.html

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

    ArkNet Banned

    Joined:
    15 May 2010
    Messages:
    26
    Likes Received:
    1
    Reputations:
    0
    Спасибо почти розобрался...
     
  4. Refqs

    Refqs Banned

    Joined:
    20 Feb 2010
    Messages:
    139
    Likes Received:
    56
    Reputations:
    27
    Я юзаю такие настройки для авторизации. (IdHttp)
    [​IMG]
    На форме кукименеджер должен быть привязан к idhttp, handleredirects ---> true
    AllowCookies ---> True;

    код Делфи
     
  5. Refqs

    Refqs Banned

    Joined:
    20 Feb 2010
    Messages:
    139
    Likes Received:
    56
    Reputations:
    27
    Тут есть обработка исключений типа русского пароля и пароля с пробелами :)
     
  6. ArkNet

    ArkNet Banned

    Joined:
    15 May 2010
    Messages:
    26
    Likes Received:
    1
    Reputations:
    0
    memo1.Lines.add('Cookies: '+s);
    IdCookieManager1.AddCookie('remixsid='+s+ '; path=/; ','vkontakte.ru');
    finally
    if s = '' then


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

    Nelzone Banned

    Joined:
    12 Apr 2008
    Messages:
    172
    Likes Received:
    134
    Reputations:
    6
    добовляет лину мемо куки,s String,remixsid айди вк,в дир
    vkontakte.ru..
    дальше

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

    ArkNet Banned

    Joined:
    15 May 2010
    Messages:
    26
    Likes Received:
    1
    Reputations:
    0
    IdCookieManager1.AddCookies('remixsid='+s+ '; path=/; ','vkontakte.ru');

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

    Incompatible type: 'TIdCookieManedger' and 'String'
     
  9. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    Если в пароле будет '+', то аккаунт не авторизуется.
     
  10. ArkNet

    ArkNet Banned

    Joined:
    15 May 2010
    Messages:
    26
    Likes Received:
    1
    Reputations:
    0
    Для создания простого чекера акаунтов даже хватит получения кукис.
    Если получил 54 значную строку значить валидный.... :rolleyes:


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

    И есть ли гдето полная инфа на русском языке про коммпонент Idhhttp желательной с картинками и с видео. :confused:
     
    #10 ArkNet, 16 May 2010
    Last edited: 16 May 2010
  11. need_million

    need_million Member

    Joined:
    29 Apr 2010
    Messages:
    158
    Likes Received:
    6
    Reputations:
    0
    используй httpwebrequest инфы по нему много
     
  12. Refqs

    Refqs Banned

    Joined:
    20 Feb 2010
    Messages:
    139
    Likes Received:
    56
    Reputations:
    27
    Ты что?
    [​IMG]
    Конечно авторизуется. Так и нужно!
     
  13. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    Нет. Проверь сам.
     
  14. HakaR

    HakaR Active Member

    Joined:
    23 Jul 2009
    Messages:
    301
    Likes Received:
    200
    Reputations:
    3
    idhttp1.Request.CustomHeaders.Add('Cookie: remixsid=' + s);
    str := idhttp1.Get('http://vkontakte.ru/profile.php');
     
    4 people like this.
  15. Refqs

    Refqs Banned

    Joined:
    20 Feb 2010
    Messages:
    139
    Likes Received:
    56
    Reputations:
    27
    Всё работает.
    [​IMG]
     
  16. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    У тебя же в примере '+' отправляется без urlencode, то есть, как пробел
     
  17. ArkNet

    ArkNet Banned

    Joined:
    15 May 2010
    Messages:
    26
    Likes Received:
    1
    Reputations:
    0
    Все получилось в 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:
     
  18. HakaR

    HakaR Active Member

    Joined:
    23 Jul 2009
    Messages:
    301
    Likes Received:
    200
    Reputations:
    3
    1. Добавляем куки (можешь вообще не юзать куки менеджер).
    4. Можешь убрать эти строчки.
     
  19. ArkNet

    ArkNet Banned

    Joined:
    15 May 2010
    Messages:
    26
    Likes Received:
    1
    Reputations:
    0
    При использование метода Get исходный код отображается неправильно
    пример
    <div id='coins_left'>? ??? <b>0</b> ????????????????
    Заместь знаков вопроса должно писать "неиспользованных голосов."
    Все символы кирилицы превратились в знаки вопроса, как это испарвить?