Frage

Ich arbeite an einem einfachen HTML-Schaber für Hulu in Python 2.6 und Probleme habe auf mein Konto mit Anmeldung. Hier ist mein Code so weit:

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

Der Code kompiliert und ausgeführt, aber alles, was gedruckt ist:

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

Ich nehme an, es ist ein Fehler, wie ich Cookies bin Handhabung, aber kann einfach nicht scheinen, es zu entdecken. Ich habe gehört, Mechanize ist ein sehr nützliches Modul für diese Art von Programm, aber da dies der einzige Geschwindigkeitsstoß links zu sein scheint, ich habe gehofft, meine Fehler zu finden.

War es hilfreich?

Lösung

Die Fehlermeldung, Sie werden immer wieder irreführend sein könnte. Zum Beispiel könnte der Server sucht User-Agent und zu sehen, dass es nicht einer des unterstützten Browser sagen, oder bei der Suche HTTP_REFERER erwartet, dass es von Hulu Domain zu kommen. Mein Punkt ist, gibt es zwei viele Variablen in der Anfrage kommen, um sie eins nach dem anderen

zu halten raten

Ich empfehle ein HTTP-Analysator-Werkzeug, zum Beispiel Charles oder der in Firebug herauszufinden, was (Header-Felder, Cookies, Parameter) die vom Client zum Server sendet, wenn Sie hulu Login über einen Browser zu tun. Dies gibt Ihnen die genau Anfrage, die Sie brauchen in Ihrem Python-Code zu konstruieren.

Andere Tipps

Was Sie sehen, ist eine Ajax-Rückkehr. Es wird wahrscheinlich mit Hilfe von Javascript, das Cookie zu setzen und Ihre Versuche vermasseln zu authentifizieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top