авторизация вконтакте

Discussion in 'Социальные сети' started by rudra, 15 Mar 2009.

  1. rudra

    rudra New Member

    Joined:
    30 Dec 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Начал писать скрипт для контакта, но тут же встал затык с авторизацией:
    #!/usr/bin/python

    import cgi
    import urllib2
    import Cookie
    import md5

    def main():
    print "Content-type: text/html\n"

    id = подставь id
    name = подставь мыло
    passw = подставь пароль
    md5passw = md5.new(passw)

    url = 'http://vkontakte.ru/id' + id
    req = urllib2.Request(url)
    req.add_header = ('User-Agent', "Mozilla/4.0 (compatible; MSIE 5.01; Widows NT)")
    req.add_header('Cookie', "remixpass=" + md5passw + ";remixemail" + name + ";remixmid" + id)
    f = urllib2.urlopen(req)

    print f.read()

    main()

    Благодарю за ценный совет.
     
  2. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Без remixsid авторизоваться не получится, поэтому шли пост запрос к серверу на авторизацию
     
    _________________________
  3. rudra

    rudra New Member

    Joined:
    30 Dec 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    типо такого? У меня не работает. Вываливает страницу с авторизацией, но значения не передает.
    data = {'email':name, 'pass':passw}
    params = urllib.urlencode(data)
    url = 'http://vkontakte.ru/login.php'
    req = urllib2.Request(url, params)
    req.add_header = ('User-Agent', "Mozilla/4.0 (compatible; MSIE 5.01; Widows NT)")
    f = urllib2.urlopen(req)
    print f.read()
     
  4. rudra

    rudra New Member

    Joined:
    30 Dec 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    господа, кто-то может подсказать, что не так? Очень хочется разобраться.
     
  5. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Может там капча появляется...
     
    _________________________
  6. rudra

    rudra New Member

    Joined:
    30 Dec 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Не. Капчи на логине не видел(((
     
  7. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Видимо контакт отдает кукисы и редиректит. Скрипт кукисы отбрасывает и следует по редиректу, в результате получаешь ответ в виде страницы авторизации
     
    _________________________
  8. rudra

    rudra New Member

    Joined:
    30 Dec 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    эм... это идея! Надо попробовать скормить странице с логином те же куки, что приходят по запросу главной страницы вместе с постом
     
    #8 rudra, 16 Mar 2009
    Last edited: 16 Mar 2009
  9. rudra

    rudra New Member

    Joined:
    30 Dec 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Добрался сегодня вечером до скрипта. Нифига. Получаю куки от страницы login.php, скармливаю их же, но уже с постом авторизации. Так вообще страницу не грузит... токмо без кук.
     
  10. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Какой пост авторизации после получения кукисов если ты кукисы с пост запроса должен получить и использовать их для перехода по внутренним страницам
     
    _________________________
  11. rudra

    rudra New Member

    Joined:
    30 Dec 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    ща пробанем.
    Странные какие-то куки:
    remixlang=1; expires=Thu, 18-Mar-2010 20:02:53 GMT; path=/; domain=.vkontakte.ru, remixchk=5; expires=Sat, 20-Mar-2010 22:32:00 GMT; path=/; domain=.vkontakte.ru, remixchk=5; expires=Sat, 27-Mar-2010 22:27:53 GMT; path=/; domain=.vkontakte.ru, remixchk=5; expires=Fri, 12-Mar-2010 18:03:06 GMT; path=/; domain=.vkontakte.ru
     
    #11 rudra, 18 Mar 2009
    Last edited: 18 Mar 2009
  12. rudra

    rudra New Member

    Joined:
    30 Dec 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    пипец. сменили пароль к моей анкете... Не могу авторизироваться. Хотя, анкеты есть
     
    #12 rudra, 18 Mar 2009
    Last edited: 18 Mar 2009
  13. dvion

    dvion New Member

    Joined:
    11 Mar 2009
    Messages:
    12
    Likes Received:
    2
    Reputations:
    0
    rudra,
    Шлёшь log + pass на login.php
    Если всё окей - то он сделает редирект (302, location), тогда можешь забирать куку.
    Если редирект не сделал, то либо капча, либо вообще лог+пасс кривой.

    Теперь насчёт куки - remixsid уже месяца 3-4 обязательный параметр в куках, а вот всё остальное - мусор (ну, за исключением тех случаев, когда нужно стырить акк).
    Так что можешь смело брать только remixsid, его вообще можно один раз получить и год пользоваться. Пока пасс, конечно, старый ;)

    ___
    дополнение:

    можно быстро чекать приготовленные куки очень быстрым способом:
    обращаться к vkontakte.ru с кукой, после чего смотреть, идёт ли 302 с location или нет ;)
    скорость + экономия + акк в он-лайн не вылетает, что тоже важно (при запросе vkontakte.ru с правильной кукой делается редирект на profile.php (он же idX)).
     
    #13 dvion, 19 Mar 2009
    Last edited: 19 Mar 2009
  14. rudra

    rudra New Member

    Joined:
    30 Dec 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    ага. Принцип ясен. Я постом получаю с логин.пхп куку с remixsid и дальше скармливаю ее, например, странице своей анкеты.
    Спасибо. Буду пробовать написать такое. Когда получится, выложу сорцы
     
  15. gold-goblin

    gold-goblin Elder - Старейшина

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    http://forum.devisible.ru//showthread.php?t=297
    посмотри тут мой бот. Только парсинг страници фигово реализовал (с ошибкой) и для аостинга надо куча данных
     
  16. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Скандалы интриги расследования??? ппц код в первом посте, я пока не в cgi, переделать труда не составит думаю.


    PHP:
    def LoginsContact(nickname,password):
        
    cookie cookielib.CookieJar() 
        
    opener urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
        
    urllib2.install_opener(opener)
        
    headers = {"User-Agent" "Mozilla/4.0 (compatible; MSIE 5.5; WindowsNT)" }
        
    data_s = {"email":nickname"pass":password}
        
    send_data urllib.urlencode(data_s)
        
    u_request urllib2.Request("http://vkontakte.ru/login.php"send_dataheaders)
        try:
            
    vk str(urllib2.urlopen(u_request).info())
        
    except:
            
    cookie status "ERROR"
            
    return cookiestatus
        
    else:
            if 
    "remixsid=deleted" in str(vk):
                
    status "NO"
                
    return cookiestatus
            
    else:
                
    status "YES"
                
    return cookiestatus
     
  17. rudra

    rudra New Member

    Joined:
    30 Dec 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    жирок!
     
  18. rudra

    rudra New Member

    Joined:
    30 Dec 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    добрался до отправки запроса на дружбу. Вот код хтмл: <li><a href="mail.php?act=write&to=2300774">Отправить сообщение</a></li><li><a href="friend.php?id=2300774">Друзья Женечки</a></li><li><a href="#add" onclick="addToFriend(2300774); return false;">Добавить в друзья</a></li>

    Из этого сделал вывод, что запрос на авторизацию должен выглядеть вот так:
    "http://vkontakte.ru/addToFriend(" + id + "); return false;"
    Но в результате не видно вот той шняги, которую только недавно ввели и где есть кнопка "добавить"
     
  19. wildshaman

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

    Joined:
    16 Apr 2008
    Messages:
    477
    Likes Received:
    483
    Reputations:
    99
    onclick="addToFriend(2300774); return false;"



    Это е надо приписывтаь к урлу. Это javascript.

    Смотри запрос, напрмиер, плагином live http headers для firefox
     
  20. rudra

    rudra New Member

    Joined:
    30 Dec 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    интересный плагин. Вот какой результат:
    1. Запрос при запросе на дружбу(который открывает окошко):
    POST /friend.php act=a_add_form&fid=795186
    2. Запрос при отправки формы из окошка:
    POST /friend.php act=addFriend&fid=795186&h=1367d519&first_name=%D0%AE%D0%BB%D0%B8%D1%8F&last_name=%D0%A0%D0%B0%D0%B5%D0%B2%D1%81%D0%BA%D0%B0%D1%8F&sex=%D0%B0&message=Privet

    Я думаю, что можно сразу использовать второй запрос. Получается:
    /friend.php act=addFriend&fid=IDЖЕРТВЫ&h=1367d519&first_name=ИМЯ&last_name=ФАМИЛИЯ&sex=ПОЛ&message=МЕССАДЖ_КАМРАДУ
    Но одна непонятка. Что это за число? 1367d519
    Просто рандомное??? Не совсем рандомное. Каждому юзеру идет свое. И при повторе запроса оно одинаковое.
     
    #20 rudra, 19 Mar 2009
    Last edited: 20 Mar 2009