Dans mon programme actuel, je suis accès à une page comme authentifié HTTP de base, ce qui fonctionne parfaitement:Utilisez mécaniser pour accéder à une page Web HTTP de base authentifiées
import urllib2
url = 'http://test.localdomain/test.pl'
realm = 'Test DB'
username = 'foo'
password = 'bar'
auth_handler = urllib2.HTTPBasicAuthHandler()
auth_handler.add_password(realm, uri , username, password)
opener = urllib2.build_opener(auth_handler)
data = opener.open(url).read()
Maintenant, je veux cliquer sur un bouton sur cette page Après la connexion. J'ai trouvé la bibliothèque mécanisée pour Python qui peut faire des choses comme ça facilement. Malheureusement, je n'ai pas réussi à faire la même authentification de base que ci-dessus en utilisant mécaniser. Voici ce que j'ai essayé:
from mechanize import Browser
url = 'http://test.localdomain/test.pl'
realm = 'Test DB'
username = 'foo'
password = 'bar'
browser = Browser()
browser.add_password(url, username, password, realm)
browser.open(url)
Mais je reçois l'exception suivante:
HTTP Error refresh: The HTTP server returned a redirect error that would lead to an
infinite loop.
The last 30x error message was:
OK
Comment puis-je résoudre ce problème? Ou puis-je laisser mechanize utiliser le authhander déjà créé par urllib2 dans mon premier extrait?
Essayez avec une URL différente? – user225312
J'ai essayé de nombreuses variantes d'URL, aucune d'entre elles n'a fonctionné. avec urllib2, tout va bien. donc je me demande pourquoi la même URL ne fonctionne pas avec mécaniser. – ifischer
Qu'est-ce que 'realm'? – user225312