Найти - Пользователи
Полная версия: Авторизация Вконтакте
Начало » Python для новичков » Авторизация Вконтакте
1
agryn
Здравствуйте полностью отснифил трафик между браузером и 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
Протестировал библиотеку vk_api ver 3.1 (http://pastebin.com/g8gRc3Ct#)
при выполнении кода

from vk import login
login(login, pass)

False
тоисть авторизация не произошла
plusplus
from grab import Grab
g = Grab()
url='http://m.vk.com'
g.set_input("email", 'mylogin')
g.set_input("pass", 'mypassword')
g.submit()

Я так делал…
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())
agryn
єтот вариант и у меня работал раньше но при выполнении єтого кода
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
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
agryn
Охренеть! Получилось та только авторизация почемуто произошла при указании в качестве логина номера телефона!???
GaiveR
Я так делал:
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
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB