1. 程式人生 > 實用技巧 >Requests 請求-重定向Location

Requests 請求-重定向Location

Requests 請求,有時候A會發生請求網址 B,但是網址B 沒有直接給反饋,通知了網址C,網址C 給了 請求網址A 響應。 這就是重定向、

重定向:就是通過各種方法將各種網路請求重新定個方向轉到其它位置,從地址A跳轉到地址B了。

重定向狀態碼:301---臨時重定向; 302 ---永久重定向;

有個部落格園 中抓包到的請求,就是重定向。

url = https://i.cnblogs.com/EditPosts.aspx?opt=1

抓包如下:

python 中程式碼如下:

這個請求中的 關鍵是:
allow_redirects=True,requests 自動進行重定向處理; 這樣,就無法檢視進行重定向處理前 返回的headers 中location資訊了。
要檢視重定向處理前的URL,返回,需將 allow_redirects=False,requests 不進行重定向處理。程式碼如下:

可以捕捉到 響應 headers 中Location,到的新url。
程式碼如下:
urlB = "https://i.cnblogs.com/EditPosts.aspx?opt=1"
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0"}
s = requests.session()
logging.captureWarnings(True)
re = s.get(url=urlB,
headers=headers,
allow_redirects=True,
verify=False)
print(re.status_code)

or:re = s.get(url=urlB,
           headers=headers,
allow_redirects=False,
verify=False)
print(re.status_code)
new_url = re.headers["Location"]
print(new_url)
故,遇到重定向URL時,如果希望 Requests 主動進行重定向處理:

allow_redirects=True,請求過去後,遇到重定向,將主動請求 重定向後的新url,並返回新URL的響應;
如果,不希望 進行處理,想捕捉 重定向後的URL,使用
allow_redirects=False,列印響應 headers 中的Location。
一般遇到重定向,不加 allow_redirects引數的話,Requests庫預設 值為True,主動進行重定向後的請求。