Python Requests library redirect new url Python Requests library redirect new url python python

Python Requests library redirect new url


You are looking for the request history.

The response.history attribute is a list of responses that led to the final URL, which can be found in response.url.

response = requests.get(someurl)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")

Demo:

>>> 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/3302 http://httpbin.org/redirect/2302 http://httpbin.org/redirect/1>>> print(response.status_code, response.url)200 http://httpbin.org/get


This is answering a slightly different question, but since I got stuck on this myself, I hope it might be useful for someone else.

If you want to use allow_redirects=False and get directly to the first redirect object, rather than following a chain of them, and you just want to get the redirect location directly out of the 302 response object, then r.url won't work. Instead, it's the "Location" header:

r = requests.get('http://github.com/', allow_redirects=False)r.status_code  # 302r.url  # http://github.com, not https.r.headers['Location']  # https://github.com/ -- the redirect destination


the documentation has this blurb https://requests.readthedocs.io/en/master/user/quickstart/#redirection-and-history

import requestsr = requests.get('http://www.github.com')r.url#returns https://www.github.com instead of the http page you asked for