Python auth_handler que no trabaja para mí
-
30-09-2019 - |
Pregunta
He estado leyendo sobre la capacidad de urllib2 de Python para abrir y leer los directorios que están protegidos por contraseña, pero incluso después de ver ejemplos en los documentos, y aquí en StackOverflow, no puedo conseguir mi guión de trabajo.
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()
Al imprimir el contenido, se imprime el contenido de la pantalla de inicio de sesión que la url Estoy intentando abrir volverá a dirigir a usted. Alguien sabe qué es esto?
Solución
auth_handler
es sólo para la autenticación básica HTTP. El sitio aquí contiene un formulario HTML, por lo que tendrá que enviar su nombre de usuario / contraseña como datos POST.
Te recomiendo utilizar el módulo mechanize
que simplificará el acceso para usted.
Ejemplo rápido:
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()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow