Question

Je travaille sur un simple programme HTML pour Hulu en python 2.6 et je ne parviens pas à me connecter à mon compte. Voici mon code jusqu'à présent:

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

Le code est compilé et exécuté, mais tout ce qui est imprimé est:

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

Je suppose qu'il y a une erreur dans la façon dont je gère les cookies, mais je n'arrive pas à le détecter. J'ai entendu dire que Mechanize est un module très utile pour ce type de programme, mais comme cela semble être le seul ralentisseur qui reste, j'espérais trouver mon bogue.

Était-ce utile?

La solution

Le message d'erreur que vous recevez peut être trompeur. Par exemple, le serveur peut regarder user-agent et voir que cela ne fait pas partie des navigateurs pris en charge, ou que HTTP_REFERER s'attend à ce qu'il provienne du domaine hulu. Mon point est qu'il y a deux nombreuses variables entrant dans la demande pour continuer à les deviner une par une

Je recommande d'utiliser un outil d'analyse http, par exemple. Charles ou celui figurant dans Firebug pour déterminer le type (champs d’en-tête, cookies, paramètres) que le client envoie au serveur lorsque vous vous connectez via hulu via un navigateur. Cela vous donnera la requête exacte dont vous avez besoin pour construire dans votre code python.

Autres conseils

Ce que vous voyez est un retour ajax. Il utilise probablement javascript pour définir le cookie et échoue lors de vos tentatives d'authentification.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top