Bonjour, j'ai une longue série d'urls d'images (ex. site.com/pic.jpg
) que je récupère dans l'ordre pour mon programme (en Python v2.6). J'utilise urllib.urlretreive()
. Parfois, l'url me demande un nom d'utilisateur et un mot de passe. J'ai donc placé urllib.urlretreive()
dans un try/except pour éviter ces urls mais je dois encore insérer un faux nom d'utilisateur et un faux mot de passe pour provoquer l'erreur qui déclenche le try/except pour sauter cette url. Existe-t-il un moyen de détecter une demande de mot de passe et de sauter l'url automatiquement ? C'est une très longue liste et je ne veux pas attendre ici tout le temps pour appuyer sur la touche Entrée de temps en temps... Merci
Réponse
Trop de publicités?Si le site dispose d'une authentification HTTP, vous devez ajouter un en-tête à votre requête pour insérer un nom d'utilisateur et un mot de passe (faux ou non). Voici comment vous pouvez le faire en utilisant urllib2
.
import base64
import urllib2
headers = {'Authorization': 'Basic ' + base64.encodestring('[username]:[password]')}
req = urllib2.Request(url, data, headers)
resp = urllib2.urlopen(req).read()
Cela donnera urllib2.HTTPError: HTTP Error 401: Unauthorized
si le nom d'utilisateur/mot de passe est incorrect, mais le serveur ignorera l'authentification si elle n'est pas requise.