Récupération d'URL redirigées avec des requêtes Python
Requests, une bibliothèque Python populaire pour l'envoi de requêtes HTTP, permet aux utilisateurs de gérer les redirections en définissant le paramètre allow_redirects paramètre sur True. Bien que cela résolve le problème des redirections automatiques, cela vous laisse ignorer l’URL cible. Cette question explique comment obtenir l'URL finale après une série de redirections.
La solution réside dans l'attribut réponse.history. Après une requête réussie, Response.url renvoie l'URL finale, tandis que Response.history fournit une liste de toutes les réponses intermédiaires et de leurs URL respectives. À l'aide de ces données, vous pouvez inspecter les redirections et déterminer la destination finale.
L'extrait de code suivant illustre cette approche :
import requests response = requests.get(someurl, allow_redirects=True) if response.history: print("Request was redirected") for resp in response.history: print(resp.status_code, resp.url) print("Final destination:") print(response.status_code, response.url) else: print("Request was not redirected")
Ce code vérifie si l'attribut réponse.history n'est pas vide. , indiquant l'apparition de redirections. Chaque objet resp de l'historique contient le code d'état et l'URL d'une réponse intermédiaire. Enfin, réponse.url fournit l'URL finale.
Considérons l'exemple suivant :
>>> import requests >>> response = requests.get('http://httpbin.org/redirect/3') >>> response.history (<Response [302]>, <Response [302]>, <Response [302]>) >>> for resp in response.history: ... print(resp.status_code, resp.url) ... 302 http://httpbin.org/redirect/3 302 http://httpbin.org/redirect/2 302 http://httpbin.org/redirect/1 >>> print(response.status_code, response.url) 200 http://httpbin.org/get
Cette sortie confirme que la demande a été redirigée trois fois avant d'atteindre la destination finale à l'adresse http:// httpbin.org/get, fournissant une image complète de la chaîne de redirection.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!