Pregunta

Estoy trabajando en un simple raspador HTML para Hulu en python 2.6 y tengo problemas para iniciar sesión en mi cuenta. Aquí está mi código hasta ahora:

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

El código se compila y se ejecuta, pero todo lo que se imprime es:

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

Supongo que hay algún error en la forma en que manejo las cookies, pero parece que no puedo detectarlo. Escuché que Mechanize es un módulo muy útil para este tipo de programa, pero como parece ser el único obstáculo que queda, esperaba encontrar mi error.

¿Fue útil?

Solución

El mensaje de error que está recibiendo podría ser engañoso. Por ejemplo, el servidor podría estar mirando user-agent y ver que dice que no es uno de los navegadores compatibles, o mirando HTTP_REFERER esperando que provenga del dominio hulu. Mi punto es que hay dos variables que vienen en la solicitud para seguir adivinándolas una por una

Recomiendo usar una herramienta de analizador http, p. Charles o el de Firebug para averiguar qué (campos de encabezado, cookies, parámetros) envía el cliente al servidor cuando inicia sesión en hulu a través de un navegador. Esto le dará la solicitud exacta que necesita construir en su código de Python.

Otros consejos

Lo que estás viendo es un retorno ajax. Probablemente esté usando javascript para configurar la cookie y arruinando sus intentos de autenticación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top