Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 21, 2012 20:25:38

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Здравствуйте полностью отснифил трафик между браузером и vk написал код но почему то не пашет

import requests
import lxml.html
from urlparse import urlparse
def get_actionurl(htmlcode, formurl, formnumber = 0):
    """
    получение урл для отправки данных из веб-формы
    """
    action_url = lxml.html.fromstring(htmlcode).xpath('//form/@action')[formnumber]
    if urlparse(action_url).netloc == '':
        if action_url[:1] == '/':
            action_url = urlparse(formurl).scheme + '://' + urlparse(formurl).netloc + action_url
        else:
            if action_url[:1] == '?':
                action_url = formurl
            else:
                action_url = formurl + '/' + action_url           
    return action_url
def vkauth(login, password, vkbot = requests.session()):
    vkbotheaders = {
                    'User-Agent':'Mozilla/5.0 (Windows NT 6.0; rv:14.0) Gecko/20100101 Firefox/14.0.1',
                    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                    'Accept-Language':'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3',
                    'Accept-Encoding':'gzip, deflate',
                    'Connection':'keep-alive',
                    'DNT':'1'
                    }
    vkbot.config['base_headers'].update(vkbotheaders)
    vkbot.encoding = 'utf-8'
    loginpage = vkbot.get('http://m.vk.com/login.php')
    actionurl = get_actionurl(loginpage.content, formurl = loginpage.url)
    vkbot.config['base_headers'].update({'Referer':loginpage.url})
    vkbot.post(actionurl, data = {'email':login, 'pass':password})
    return vkbot
result = vkauth(vklogin, vkpass)
Подскажите кто рабочий вариант, выдает такой результата как будто логин или пароль неправильны

Отредактировано agryn (Окт. 21, 2012 20:28:05)

Офлайн

#2 Окт. 21, 2012 21:29:14

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Протестировал библиотеку vk_api ver 3.1 (http://pastebin.com/g8gRc3Ct#)
при выполнении кода

from vk import login
login(login, pass)

False
тоисть авторизация не произошла

Отредактировано agryn (Окт. 21, 2012 21:29:44)

Офлайн

#3 Окт. 21, 2012 21:34:10

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

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

from grab import Grab
g = Grab()
url='http://m.vk.com'
g.set_input("email", 'mylogin')
g.set_input("pass", 'mypassword')
g.submit()

Я так делал…



Офлайн

#4 Окт. 21, 2012 22:04:18

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

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

Так вроде работает:

import requests
import lxml.html
username = '...'
password = '...'
 
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.0; rv:14.0) Gecko/20100101 Firefox/14.0.1',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language':'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3',
    'Accept-Encoding':'gzip, deflate',
    'Connection':'keep-alive',
    'DNT':'1'
}
s = requests.session(headers=headers)
doc = lxml.html.fromstring(s.get('http://m.vk.com/').content)
form = doc.forms[0]
form.fields['email'] = username
form.fields['pass'] = password
r = s.post(form.action, data=form.form_values())

Офлайн

#5 Окт. 21, 2012 22:04:26

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

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

єтот вариант и у меня работал раньше но при выполнении єтого кода

from grab import Grab
g = Grab()
url='http://m.vk.com'
g.go(url)
g.set_input("email", 'mylogin')
g.set_input("pass", 'mypassword')
g.submit()
получаю вот такое
{"remixapi_sid": "deleted", "remixemail": "deleted", "remixpermit": "deleted", "remixmid": "deleted", "remixpass": "deleted", "remixsslsid": "deleted", "remixsid": "deleted", "remixgid": "deleted", "remixlang": "3"}
то есть авторизация не произошла

Отредактировано agryn (Окт. 21, 2012 22:05:02)

Офлайн

#6 Окт. 21, 2012 22:11:00

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

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

reclosedev
Так вроде работает:
import requests
import lxml.html
username = '...'
password = '...'
 
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.0; rv:14.0) Gecko/20100101 Firefox/14.0.1',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language':'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3',
    'Accept-Encoding':'gzip, deflate',
    'Connection':'keep-alive',
    'DNT':'1'
}
s = requests.session(headers=headers)
doc = lxml.html.fromstring(s.get('http://m.vk.com/').content)
form = doc.forms[0]
form.fields['email'] = username
form.fields['pass'] = password
r = s.post(form.action, data=form.form_values())
Спасиб за код, но я не пойму то ли у меня руки не от туда ростут но и оннґ возвращает
remixmid=deleted

Офлайн

#7 Окт. 21, 2012 22:32:48

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Охренеть! Получилось та только авторизация почемуто произошла при указании в качестве логина номера телефона!???

Офлайн

#8 Окт. 22, 2012 01:29:44

GaiveR
От:
Зарегистрирован: 2011-08-13
Сообщения: 122
Репутация: +  16  -
Профиль   Отправить e-mail  

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

Я так делал:

def get_session_id(email, password):
    """
    Authenticates user and returns session_id
    """
    data = {'act': 'login',
            'email': email,
            'pass': password}
    resp = requests.get('https://login.vk.com/', params=data)
    if 'remixsid' in resp.cookies:
        return resp.cookies['remixsid']
    else:
        return None



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version