2 votes

Détection des sites protégés par un mot de passe lors de l'utilisation d'urllib en python

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

2voto

Brent Newey Points 2632

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X