Delphi, ВКонтакте, СAPTCHA.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by rapira37, 7 Aug 2012.

  1. rapira37

    rapira37 New Member

    Joined:
    30 Jul 2012
    Messages:
    21
    Likes Received:
    0
    Reputations:
    -1
    /

    ////
     
    #1 rapira37, 7 Aug 2012
    Last edited: 14 Oct 2012
  2. ZdezBilYa

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

    Joined:
    29 Aug 2008
    Messages:
    198
    Likes Received:
    75
    Reputations:
    19
    Code:
    IdHTTP1.Response.RawHeaders.GetText;
    это не ответ сервера, это заголовок ответа

    вот ответ:
    Code:
    Memo1.Text:=idHTTP1.Get('http://vk.com/login.php?email=ЛОГИН&pass=ПАРОЛЬ');  
     
  3. 2echnoman

    2echnoman New Member

    Joined:
    3 Jul 2012
    Messages:
    54
    Likes Received:
    0
    Reputations:
    0
    Вообще-то sid капчи возвращаеться при обращении к http://vk.com/login.php. По крайней мере в браузере так.
     
  4. rapira37

    rapira37 New Member

    Joined:
    30 Jul 2012
    Messages:
    21
    Likes Received:
    0
    Reputations:
    -1
    ////
     
    #4 rapira37, 8 Aug 2012
    Last edited: 14 Oct 2012
  5. 2echnoman

    2echnoman New Member

    Joined:
    3 Jul 2012
    Messages:
    54
    Likes Received:
    0
    Reputations:
    0
    Посмотри как идет авторизация через браузер. Одним запросом GET не отвертишься.

    PS:Обращение методом Post к http://vk.com/login.php, если все норм возвращаеться значение vklogin иначе выдает sid капчи, далее методом post к https://login.vk.com/. Из ответа сервера извлекаем location (url) и обращаемся методом get к нему. Как-то так (нету учетки в vk поэтому с последним пунктом может наврал).
     
    #5 2echnoman, 8 Aug 2012
    Last edited: 8 Aug 2012
  6. rapira37

    rapira37 New Member

    Joined:
    30 Jul 2012
    Messages:
    21
    Likes Received:
    0
    Reputations:
    -1
    ////
     
    #6 rapira37, 8 Aug 2012
    Last edited: 14 Oct 2012
  7. 2echnoman

    2echnoman New Member

    Joined:
    3 Jul 2012
    Messages:
    54
    Likes Received:
    0
    Reputations:
    0
    При посылке методом get нельзя получить sid капчи. Его просто нет в возвращаемом контенте. Даже нет никаких указателей, что надо допустим его запросить. Я не знаю как это делает твой скрипт. Выкладывай его сюда, ели не секрет.
     
  8. 2echnoman

    2echnoman New Member

    Joined:
    3 Jul 2012
    Messages:
    54
    Likes Received:
    0
    Reputations:
    0
    Вообщем можно сделать как-то так:
    перед тем как авторизироваться запросом get, мы посылаем запрос методом post на http://vk.com/login.php. Если возвращаеться значение vklogin значит все норм и можно авторизироваться запросом get. Если возвращаеться значение наподобие такого
    , то извлекаем sid капчи и запрашиваем её методом get. Далее мы распознаем капчу вручную (ну или с помощью индусов) и отправляем на http://vk.com/login.php определенные данные в Tstringlist. Если в ответ приходи vklogin значит все зашибись и можно ехать дальше. Иначе идем и покупаем себе очки (ну или индусам) и снова делаем запрос методом post к http://vk.com/login.php, то бишь возвращаемся к началу. И в конце можно делать запрос методом get на авторизацию.
    PS:Если что-то непонятно, то напиши что именно.
    PSS: Опять привидение на сайте :):
    Здесь присутствуют: 2 (пользователей - 2 , гостей - 0)
    2echnoman
     
    #8 2echnoman, 9 Aug 2012
    Last edited: 9 Aug 2012
  9. rapira37

    rapira37 New Member

    Joined:
    30 Jul 2012
    Messages:
    21
    Likes Received:
    0
    Reputations:
    -1
    ////
     
    #9 rapira37, 9 Aug 2012
    Last edited: 14 Oct 2012
  10. 2echnoman

    2echnoman New Member

    Joined:
    3 Jul 2012
    Messages:
    54
    Likes Received:
    0
    Reputations:
    0
    Установи HttpAnalyzerStdV5. Затем запусти его и нажми кнопку старт. Далее запусти свой php-скрипт. Снифер начнет отображать http запросы. Псле того как скрипт закончит раборту в HttpAnalyzerStdV5 еажми кнопку stop. Сделай скриншот окна HttpAnalyzer-а, залей его (скриншот) на какой-нибудь хостинг картинок и закинь сюда ссылку на картинку.
    Получиться что-то наподобие такого:[​IMG].
    Это все надо, чтобы посмотреть как авторизируеться твой скрипт.
     
  11. rapira37

    rapira37 New Member

    Joined:
    30 Jul 2012
    Messages:
    21
    Likes Received:
    0
    Reputations:
    -1
    ////
     
    #11 rapira37, 9 Aug 2012
    Last edited: 14 Oct 2012
  12. muip

    muip New Member

    Joined:
    1 Sep 2011
    Messages:
    45
    Likes Received:
    4
    Reputations:
    0
    http://vk.com/login.php?op=a_login_attempt
     
  13. rapira37

    rapira37 New Member

    Joined:
    30 Jul 2012
    Messages:
    21
    Likes Received:
    0
    Reputations:
    -1
    ////
     
    #13 rapira37, 11 Aug 2012
    Last edited: 14 Oct 2012
  14. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    1) делай то что делает браузер
    2) авторизируйся на мобильной версии (а потом, если нужно, переходи на полною) там проще
     
  15. onlyFashion

    onlyFashion New Member

    Joined:
    30 Jan 2012
    Messages:
    12
    Likes Received:
    1
    Reputations:
    0
    Сделай пост запросами.

    Первый пост запрос:

    HTML:
    Данные:
    act=a_login_attempt
    login=твой логин
    
    И это все отправляем на http://vk.com/login.php
    если все хорошо то ответ будет vklogin, если нет то ответ будет

    {"ok":-2,"captcha_sid":"362449647211","text":"Enter code"}

    Берем парсим значние 362449647211 и вытягиваем картинку нашей капчи так http://vk.com/captcha.php?s=1&sid=362449647211 потом ее как-то распознаем.

    Дальше отправляем новый запрос:

    Code:
    Данные:
    act=a_login_attempt
    login=твой логин
    captcha_sid=362449647211
    captcha_key=символы на капче
    
    И это все отправляем на http://vk.com/login.php
    И в ответ должны получить vklogin

    Дальше уже отправляем наши данные для авторизации.

    Code:
    Данные:
    act=login
    success_url=
    fail_url=
    try_to_login=1
    to=
    vk=1
    al_test=3
    from_host=vk.com
    from_protocol=http
    ip_h=нужно спарсить
    email=твой логин
    pass=твой пароль
    expire=
    
    И это все отправляем на https://login.vk.com/
    И после этого должен у нас появится редирект

    Ну вот и все, это щас стандартная авторизация через vk.com
     
  16. ol1ver

    ol1ver Active Member

    Joined:
    22 Jul 2011
    Messages:
    237
    Likes Received:
    155
    Reputations:
    0
    1. Отправляем пустой запрос http://vkontakte.ru/login.php?op=a_login_attempt
    если ответ vklogin то капчи нет и сразу можете читать 3й пункт.

    2. Капча. Сервер выдал

    {"ok":-2,"captcha_sid":"361003254776","text":"Enter code"}

    дергаем captcha_sid -> 361003254776

    Отправляем запрос http://vkontakte.ru/captcha.php?s=1&sid=361003254776. Дергаем тело капчи и отправляем на расшифровку.
    Когда узнали значение капча отправляем запрос http://vkontakte.ru/login.php?op=a_login_attempt&captcha_sid=361003254776&captcha_key=z9cd и повторяем 3й пункт

    3. Отправляем post запрос http://login.vk.com/?act=login (email, pass, expire, vk)