Domanda

Ho letto circa la capacità di urllib2 di Python per aprire e leggere le directory che sono protetti da password, ma anche dopo guardando esempi nella documentazione, e qui su StackOverflow, non posso avere il mio script per lavoro.

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()

Quando stampo il contenuto, esso stampa i contenuti della schermata di login che l'URL che sto cercando di aprire sarà favore usare. Qualcuno sa perché questo è?

È stato utile?

Soluzione

auth_handler è solo per l'autenticazione HTTP di base. Il sito qui contiene un form HTML, quindi è necessario inviare il tuo username / password come dati POST.

vi consiglio di utilizzare il modulo mechanize che semplificherà il login per voi.

Esempio rapida:

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()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top