Проблема с cookie в Python - PullRequest
       18

Проблема с cookie в Python

2 голосов
/ 16 января 2009

Я работаю над простым HTML-шабером для Hulu в Python 2.6 и у меня проблемы со входом в мою учетную запись. Вот мой код:

import urllib
import urllib2
from cookielib import CookieJar
#make a cookie and redirect handlers
cookies = CookieJar() 
cookie_handler= urllib2.HTTPCookieProcessor(cookies)
redirect_handler= urllib2.HTTPRedirectHandler()

opener = urllib2.build_opener(redirect_handler,cookie_handler)#make opener w/ handlers

#build the url
login_info = {'username':USER,'password':PASS}#USER and PASS are defined
data = urllib.urlencode(login_info)

req = urllib2.Request("http://www.hulu.com/account/authenticate",data)#make the request
test = opener.open(req) #open the page
print test.read() #print html results

Код компилируется и запускается, но выводится только:

Login.onError("Please \074a href=\"/support/login_faq#cant_login\"\076enable cookies\074/a\076 and try again.");

Я предполагаю, что есть какая-то ошибка в том, как я обращаюсь с куки, но просто не могу определить это. Я слышал, что Mechanize - очень полезный модуль для программ такого типа, но так как это, кажется, единственный оставшийся скачок скорости, я надеялся найти свою ошибку.

Ответы [ 2 ]

4 голосов
/ 16 января 2009

То, что вы видите, это возвращение Ajax. Вероятно, он использует javascript для установки cookie и мешает попыткам аутентификации.

2 голосов
/ 16 января 2009

Возвращаемое вами сообщение об ошибке может вводить в заблуждение. Например, сервер может смотреть на user-agent и видеть, что он не является одним из поддерживаемых браузеров, или смотреть на HTTP_REFERER , ожидая, что он поступит из домена hulu. Моя точка зрения состоит в том, что в запросе поступают две переменные, которые продолжают угадывать их одну за другой

Я рекомендую использовать инструмент http-анализатора, например, Charles или тот, что в Firebug , чтобы выяснить, что (поля заголовка, файлы cookie, параметры) клиент отправляет на сервер, когда вы входите в hulu через браузер. Это даст вам точный запрос, который вам нужно создать в вашем коде Python.

...