En regardant la source de urllib2, il semble que le moyen le plus simple de le faire serait de sous-classer HTTPRedirectHandler, puis d'utiliser build_opener pour remplacer le HTTPRedirectHandler par défaut, mais cela semble être beaucoup de travail (relativement compliqué) pour faire ce qui semble devoir être assez simple.
96
Réponses:
Voici le chemin des demandes :
la source
r.headers['Location']
pour voir où cela vous aurait envoyéLocation
àlocation
.requests
vous permet d'accéder aux en-têtes à la fois sous forme canonique et en minuscules. Voir docs.python-requests.org/en/master/user/quickstart/…Dive Into Python a un bon chapitre sur la gestion des redirections avec urllib2. Une autre solution est httplib .
la source
Il s'agit d'un gestionnaire urllib2 qui ne suivra pas les redirections:
la source
Le
redirections
mot-clé de lahttplib2
méthode de demande est un hareng rouge. Plutôt que de renvoyer la première demande, il lèvera uneRedirectLimit
exception s'il reçoit un code d'état de redirection. Pour retourner la réponse inital vous devez définirfollow_redirects
pourFalse
leHttp
objet:la source
je suppose que cela aiderait
la source
Je seconde le pointeur de olt sur Dive into Python . Voici une implémentation utilisant les gestionnaires de redirection urllib2, plus de travail qu'il ne devrait l'être? Peut-être, hausser les épaules.
la source
Le moyen le plus court est cependant
la source
opener = urllib.request.build_opener(debugHandler, NoRedirect())
oùdebugHandler=urllib.request.HTTPHandler()
etdebugHandler.set_http_debuglevel (1)
. En fin de compte:urllib.request.install_opener(opener)