POST запрос...

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Kandi, 25 Nov 2009.

  1. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    вот написал такой пост запрос. Кинул на Форму 2 Edit-a, 2Button, 1memo, IdHTTP1, IdCookieManager1...Ну и собственно первой кнопке дал пост запрос, а второй Close; :D
    Написал код так:
    Code:
    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.vk.com';
        Http.Request.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10';
        Http.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
        Http.Request.AcceptLanguage:='ru,en-us;q=0.7,en;q=0.3';
        Http.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7';
        Http.Request.Referer:='http://vkontakte.ru/';
    
        Data.Add('login=login');
        Data.Add('email=' + Edit1.Text);
        Data.Add('pass=' + Edit2.Text);
        StrPage := Http.Post('http://login.vk.com/?act=login', Data);
      finally
        Data.Free;
        CM.Free;
        Http.Free;
      end;
    
      if Pos('<title>В Контакте | Вход</title>',StrPage) <> 0 then
        ShowMessage('Авторизация провалилась')
      else
        ShowMessage('Авторизация прошла успешно');
    
      Memo1.Lines.Text := StrPage;
    end;
    
    Когда нажимаю button пишет "Авторизация прошла успешно"....т.е. не находит код:
    Code:
    <title>В Контакте | Вход</title>

    пробовал еще с кодом:
    Code:
    >Такой почтовый адрес не зарегистрирован, либо пароль неверный.</div>
    
    Что то я сам запутался с этими запросами.....правильно ли я его переделал подскажите ?

    Вот код анализатора...:

    Code:
    http://vkontakte.ru/login.php
    
    POST /login.php HTTP/1.1
    Host: vkontakte.ru
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.5) Gecko/20091102 MRA 5.4 (build 02647) Firefox/3.5.5 WebMoney Advisor
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: ru,en-us;q=0.7,en;q=0.3
    Accept-Encoding: gzip,deflate
    Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 300
    Connection: keep-alive
    Content-Type: application/x-www-form-urlencoded; charset=UTF-8
    X-Requested-With: XMLHttpRequest
    Referer: http://vkontakte.ru/
    Content-Length: 18
    Cookie: remixlang=0; remixchk=5; remixautobookmark=30; remixclosed_tabs=0; remixgroup_closed_tabs=0; remixfilters=8191; remixdeffriendgroups=164; remixnews_privacy_filter=0; remixnews_types=2147478270; remixclosed_tabs=6; remixref=1; remixnews_privacy_filter=0; remixgroup_closed_tabs=0; audio_vol=80; remixsid=nonenone
    Pragma: no-cache
    Cache-Control: no-cache
    op=a_login_attempt
    
    
    HTTP/1.x 200 OK
    Server: nginx/0.7.59
    Date: Wed, 25 Nov 2009 10:30:11 GMT
    Content-Type: text/html; charset=windows-1251
    Connection: keep-alive
    X-Powered-By: PHP/5.2.6-1+lenny3
    Pragma: no-cache
    Cache-Control: no-store
    Vary: Accept-Encoding
    Content-Length: 7
    ----------------------------------------------------------
    http://login.vk.com/?act=login
    
    POST /?act=login HTTP/1.1
    Host: login.vk.com
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.5) Gecko/20091102 MRA 5.4 (build 02647) Firefox/3.5.5 WebMoney Advisor
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: ru,en-us;q=0.7,en;q=0.3
    Accept-Encoding: gzip,deflate
    Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 300
    Connection: keep-alive
    Referer: http://vkontakte.ru/
    Cookie: remixlang=0; remixchk=5; remixsid=d0295
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 62
    email=lol%40mail.ru&pass=715&expire=&vk=
    
    
    HTTP/1.x 200 OK
    Server: nginx/0.7.59
    Date: Wed, 25 Nov 2009 10:30:11 GMT
    Content-Type: text/html; charset=windows-1251
    Connection: keep-alive
    X-Powered-By: PHP/5.2.6-1+lenny3
    Pragma: no-cache
    Cache-Control: no-store
    P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
    Set-Cookie: l=13262199; expires=Sat, 20-Nov-2010 22:45:10 GMT; path=/; domain=login.vk.com
    Set-Cookie: p=73bf60d54f67; expires=Sat, 27-Nov-2010 17:03:12 GMT; path=/; domain=login.vk.com
    Content-Encoding: gzip
    Vary: Accept-Encoding
    Content-Length: 339
    
     
    #1 Kandi, 25 Nov 2009
    Last edited: 25 Nov 2009
  2. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    Попробовал с тегом:
    Code:
    if Pos('<span class="ncc"><a href="/reg0">',StrPage) <> 0 then
    Пишет Авторизация прошла успешно, а в Memo кидает код:

    Code:
    <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='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='' />
          <input type='hidden' name='s' id='s' value='6c012499a0ce8cc7b319f4da3395' />
        </form>
      </body>
    </html>
    
    Подскажите что бы он мог означать? ;)
     
  3. root_sashok

    root_sashok Elder - Старейшина

    Joined:
    4 Aug 2008
    Messages:
    389
    Likes Received:
    573
    Reputations:
    102
    Проверить условие правильности пароля можно по ссылке. К примеру, если авторизация прошла успешно - ссылка должна выглядеть как http://vkontakte.ru/profile.php (или id...).

    Если авторизация провалилась, ссылка будет такой: http://login.vk.com/?act=login.
     
    1 person likes this.
  4. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    знать бы еще как это сделать в посте....я только сегодня взялся за него.... :(
    моно пример? тупой от руки хотя бы...
     
  5. root_sashok

    root_sashok Elder - Старейшина

    Joined:
    4 Aug 2008
    Messages:
    389
    Likes Received:
    573
    Reputations:
    102
    Хм, сам POST не знаю... Может, проверить через Referer? :rolleyes:

    Почитай про HTTP_HOST...

    Синтаксиса не знаю, опишу по-русски.

    Если HTTP_HOST (он же текущий адрес) http://vkontakte.ru/profile.php или HTTP_HOST = http://vkontakte.ru/id* тогда авторизация успешна, иначе авторизация не удалась.
     
    #5 root_sashok, 25 Nov 2009
    Last edited: 25 Nov 2009
  6. Пуховой

    Joined:
    25 Nov 2007
    Messages:
    46
    Likes Received:
    37
    Reputations:
    0
    Kandi, отснифьте запросы мозиллой (TamperData плагин), посмотрите внимательнее, где ошиблись :)
     
  7. tw1ns

    tw1ns New Member

    Joined:
    19 Jun 2009
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Если ты используешь indy, тогда проще так:

    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      param:TStringList;
      p:string;
    begin
      param:=TStringList.Create;
       try
        param.Add('act=login');
        param.Add('success_url=');
        param.Add('fail_url=');
        param.Add('try_to_login=1');
        param.Add('to=');
        param.Add('vk=');
        param.Add('email=адрес');
        param.Add('pass=пароль');
        param.Add('expire=');
        p:=IdHTTP1.Post('http://vkontakte.ru/login.php',param);
      finally
        param.Free;
      end;
    end;
    Проверять можно как и ты:

    Code:
     if Pos('<title>В Контакте | Вход</title>',p) <> 0 then
        ShowMessage('Авторизация провалилась')
      else
        ShowMessage('Авторизация прошла успешно');
     
  8. Luck3r

    Luck3r New Member

    Joined:
    1 Nov 2009
    Messages:
    14
    Likes Received:
    1
    Reputations:
    0
    Курить вредно.
    Надо с этими кукисами идти на вконтакте.ру, а не vk.com ;-)
     
  9. AquaKlaster

    AquaKlaster Active Member

    Joined:
    9 Mar 2009
    Messages:
    0
    Likes Received:
    204
    Reputations:
    23
    что бы авторизоватся в вк нужно отправить не 1 пост запрос а целых 3=)
     
  10. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    Говорю же) я только сегодня взялся за это дело, и очень хочу научиться с этим, т.к. хочется сделать ВКИнвайтер да и знать как работать с пост запросами....а в TWebBrowser в моей теме .... я так понял через него не пригласить никого хотя мб как то и моно....но никто не помог..и вот я решился на Post Запросы, т.к. через них я думаю можно сделать VKinviter...но практикант я начинающий повторюсь))) Про сниф...к статей я ей и пользуюсь(Mazzil'oй) я же скинул все вроде как нужные запросы....ну а толком я и не понял....что куда....читал это:
    http://parsing-and-i.blogspot.com/2009_05_01_archive.html

    я кукисами? :O
    какими именно?)

    ааам.....что то многова то :D
    это меня уже не очень радует((( а каких 3? :rolleyes:


    tw1ns

    Конечно же инди) спасибо попробую)) только не понял некоторые значения...
    Code:
        param.Add('act=login'); // это типо блок Login?
        param.Add('success_url='); // совершенная страница?(та на которую мы переходим? или я туплю?)
        param.Add('fail_url='); // плохая страница? в каком смысле?
        param.Add('try_to_login=1'); // это типо возращает к логину? или нет?
        param.Add('to='); // что за to?
        param.Add('vk='); // что за vk?
        param.Add('email=адрес'); // мейл
        param.Add('pass=пароль'); // пароль
        param.Add('expire='); // что это? непонятно(
        p:=IdHTTP1.Post('http://vkontakte.ru/login.php',param); // собственно страница авторизации?
    
    Ответьте пожалуйста....я вас прошу)
    Если кто нить сможет дать пару уроков по авторизации на каких нить простеньких сайтах через ТВ например прошу стукнуть... пять69-62три-91три...заранее спасибо если кто то откликнится...

    З.Ы. спасибо всем собственно) я пробовал авторизовываться на LiveJournal.com :D чуток разобрался и даже получилось) но не до конца понял что к чему...наверное.... :( а вот ВК, что то себя очень защищает только я не вижу смысла) ко мне 200 друзей в день со спамом лезут...выводит однако) ну, а не было бы такой защиты - 500 лезло) большой разницы не вижу..хотя дают зарабатывать Invitus'y...:D Помогите бедному студенту...)
     
  11. tw1ns

    tw1ns New Member

    Joined:
    19 Jun 2009
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Есть такая программа как HttpAnalyzer... которая показывает что и куда отправляется и принимается...я пользуюсь её.... Можно конешно как писал Пуховой пользоваться TamperDat'ой(плагин для Mozilla).
    Заходишь на страницу авторизации http://vkontakte.ru/index.php (именно на эту страницу, а не на http://login.vk.com/?act=login как писал ты, т.к. по ней идет редирект на страницу после неправильного воода данных). Включаем HttpAnalyzer и посылаем данные.
    Видим следующее:

    Code:
    act=login
    success_url=
    fail_url=
    try_to_login=1 //кол-во попыток авторизации
    to=
    vk=
    email=адрес
    pass=пароль
    expire=
    Вот эти данные нужно посылать чтоб авторизироваться.

    Насчет посыла 3 POST запросов.... сегодня посмотрю...но то, что я написал автору работает... авторизация проходит. Могу предоставить лог.
     
  12. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    HTTPAnylizator - это который в IE ставиться при установке его?! у меня он стоит только, что то я не врубился в него, а насчет мозилы...ну у меня стоит плагин я же скинул пост запросы...которые в мазиле...
    Мб кто нить даст нормальный с серийником HttpAnalizator??? а то у меня на IE без серийника :(
     
    #12 Kandi, 26 Nov 2009
    Last edited: 26 Nov 2009
  13. Failure

    Failure Elder - Старейшина

    Joined:
    21 Sep 2008
    Messages:
    179
    Likes Received:
    46
    Reputations:
    16
    зачем гемороится?
    1) на vk.com можно и посылать запрос гетом, всеравно авторизуешься
    2) потом к кукам которые получишь добавь
    Code:
    remixclosed_tabs=0;
    и спокойно дальше лазь по контакту
     
  14. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    GET'om это типо
    Code:
    http://vkontakte.ru/[email protected]&pass=1111111
    
    так или нет? расскажите по подробней плз
     
  15. Failure

    Failure Elder - Старейшина

    Joined:
    21 Sep 2008
    Messages:
    179
    Likes Received:
    46
    Reputations:
    16
    http://vk.com/login.php?act=login&email=[мыло]&pass=[пароль]

    исправил, там просто vk.com
     
    #15 Failure, 26 Nov 2009
    Last edited: 26 Nov 2009
  16. tw1ns

    tw1ns New Member

    Joined:
    19 Jun 2009
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Failure: спасибо за информацию...так и вправду гемора меньше...просто не знал =)
     
  17. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    а можно примерный код от руки? я такую авторизацию делал на TWebBrowser....в своём спамере...нубовском :D
    код такой вот:
    Code:
    Web.Navigate('http://vkontakte.ru/login.php?email='+Email+'&pass='+Pass+'&HTTP/1.0');
    Собственно приглашаю всех желающих...
    http://forum.antichat.ru/thread159327.html
    Т.К. сам я не осилю)
     
    #17 Kandi, 26 Nov 2009
    Last edited: 26 Nov 2009
  18. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    Может кто нить мне объяснить дословно по русский так сказать, как делать POST запрос, что к чему и т.д.?
     
  19. tw1ns

    tw1ns New Member

    Joined:
    19 Jun 2009
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    После ковыряний пришел к выводу что необходимо посылать 3 post'а....плюс новая indy... ;)
     
  20. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    отличный вывод :)