Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 20, 2016 01:07:23

NBK
Зарегистрирован: 2016-06-20
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с https авторизацией VK

Я новичок в python но скрипт необходимо поправить.
Есть код, до вчерашнего дня работал, но vk опять чота намудрили с авторищацией.
Покопав тему увидел что там используется аж 3 редиректа 302
1я страница заполняем форму и отсылаем
https://login.vk.com/
post = {'act': ‘login’,
‘expire’: ‘',
’_origin': 'https://vk.com',
‘email’: username,
‘pass’: password}
в ответе приходит код 302 и ссылка вида
https://vk.com/login.php?act=slogin&role=fast&redirect=1&to=&s=1&__q_hash=тутномер

важный момент считывать и обновлять куки и передавать по всем страницам которые с 302 кодом приходит.
И этот момент я не представляю как реализовать. urlib2 такого вроде не позволяет.

    def __getResponse(self, data, cookies=None, headers=None):
        opener = urllib2.build_opener()
        opener.addheaders = self.getHeaders().items()
        if headers is not None:
            opener.addheaders += headers
        if cookies is not None:
            opener.addheaders += [('Cookie', cookies)]
        if data is not None:
            data = urllib.urlencode(self.encode_dict(data))
        logger.info('request: ' + self.__url + ' ' + str(data))
        try:
            response = opener.open(self.__url, data, timeout=8)
        except urllib2.HTTPError, e:
            logger.error('HTTP error:' + str(e.message))
            print 'HTTP error'
            response = None
        return response
    def sendRequest(self, data=None, cookies=None, getCookies=False, getContent=False):
        response = self.__getResponse(data, cookies)
        if response:
            content = self.__readContent(response)
            logger.info('response: ' + content)
            if getCookies:
                if getContent:
                   return Cookie.SimpleCookie(response.info().get('Set-Cookie')), content
                else:
                    return Cookie.SimpleCookie(response.info().get('Set-Cookie'))
            else:
                return content
        else:
            logger.info('response is None!')
            return None

Отредактировано NBK (Июнь 20, 2016 01:10:30)

Офлайн

#2 Июнь 20, 2016 17:55:28

papuas
Зарегистрирован: 2015-06-19
Сообщения: 159
Репутация: +  6  -
Профиль   Отправить e-mail  

Помогите с https авторизацией VK

По всей видимости Ваш post запрос бъется о стену.
Apache Вам любезно оставил табличку, 302 контента временно нет, и указывает ссылку куда пойти.
Это как бы нормально.

# curl -i https://login.vk.com/
HTTP/1.1 302 Found
Server: Apache
Date: Mon, 20 Jun 2016 14:37:45 GMT
Content-Type: text/html; charset=windows-1251
Content-Length: 0
Connection: keep-alive
X-Powered-By: PHP/3.24294
Set-Cookie: remixlang=0; expires=Sat, 24 Jun 2017 20:59:32 GMT; path=/; domain=.vk.com
Pragma: no-cache
Cache-control: no-store
P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
Location: http://vk.com/login.php?act=slogin&role=fast&no_redirect=1&to=&s=0

NBK
Покопав тему увидел что там используется аж 3 редиректа 302
Освойте curl,firebug и увидите, что там нет аж 3 редиректов.

Отредактировано papuas (Июнь 20, 2016 18:10:53)

Офлайн

#3 Июнь 20, 2016 21:42:48

NBK
Зарегистрирован: 2016-06-20
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с https авторизацией VK

Освойте curl,firebug и увидите, что там нет аж 3 редиректов.
Да, я не совсем правильно сказал
https://login.vk.com/
получили 302 на
https://vk.com/login.php?act=slogin&role=fast&redirect=1&to=&s=1&__q_hash=%442%443%442%43D%43E%43C%435%440
получили 302 на
https://vk.com/
получили 302 на
http://vk.com/feed

с анализом того что мне нужно получить у меня нет особых проблем, есть проблемы с реализацией на python этого всего.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version