Python auth_handler ne fonctionne pas pour moi
-
30-09-2019 - |
Question
J'ai lu sur la capacité de l'urllib2 de Python pour ouvrir et lire des répertoires qui sont protégés par mot, mais même après avoir regardé des exemples dans la documentation, et ici sur StackOverflow, je ne peux pas obtenir mon script pour le travail.
import urllib2
# Create an OpenerDirector with support for Basic HTTP Authentication...
auth_handler = urllib2.HTTPBasicAuthHandler()
auth_handler.add_password(realm=None,
uri='https://webfiles.duke.edu/',
user='someUserName',
passwd='thisIsntMyRealPassword')
opener = urllib2.build_opener(auth_handler)
# ...and install it globally so it can be used with urlopen.
urllib2.install_opener(opener)
socks = urllib2.urlopen('https://webfiles.duke.edu/?path=/afs/acpub/users/a')
print socks.read()
socks.close()
Quand j'imprimer le contenu, il imprime le contenu de l'écran de connexion que l'URL que je suis en train d'ouvrir vous redirigera vers. Quelqu'un sait pourquoi il en est?
La solution
auth_handler
est uniquement pour l'authentification HTTP de base. Le site ici contient un formulaire HTML, de sorte que vous devrez soumettre votre nom d'utilisateur / mot de passe en tant que données POST.
Je vous recommandons d'utiliser le module mechanize
qui va simplifier la connexion pour vous.
Exemple rapide:
import mechanize
browser = mechanize.Browser()
browser.open('https://webfiles.duke.edu/?path=/afs/acpub/users/a')
browser.select_form(nr=0)
browser.form['user'] = 'username'
browser.form['pass'] = 'password'
req = browser.submit()
print req.read()