python接口自動化6-重定向(Location)【轉載】

本篇轉自博客:上海-悠悠python

原文地址:http://www.cnblogs.com/yoyoketang/tag/python%E6%8E%A5%E5%8F%A3%E8%87%AA%E5%8A%A8%E5%8C%96/瀏覽器

前言服務器

某屌絲男A鼓起勇氣向女神B打電話表白,女神B是個心機婊以爲屌絲男A是好人,不想直接拒絕因而設置呼叫轉移給閨蜜C了,最終屌絲男A和女神閨蜜C表白成功了,這種場景其實就是重定向了。網絡

 

1、重定向session

1. (Redirect)就是經過各類方法將各類網絡請求從新定個方向轉到其它位置,從地址A跳轉到地址B了。url

2.重定向狀態碼:spa

--301 redirect: 301 表明永久性轉移(Permanently Moved)code

--302 redirect: 302 表明暫時性轉移(Temporarily Moved )blog

3.舉個簡單的場景案例,先登陸博客園打開個人博客首頁,進個人隨筆編輯界面,記住這個地址:https://i.cnblogs.com/EditPosts.aspx?opt=1utf-8

4.退出博客園登陸,把剛纔個人隨筆這個地址輸入瀏覽器回車,抓包會看到這個請求狀態碼是302,瀏覽器地址欄瞬間刷新跳到登陸首頁去了

 

 

2、禁止重定向(allow_redirects)

1.用get方法請求:https://i.cnblogs.com/EditPosts.aspx?opt=1

2.打印狀態碼是200,這是由於requets庫自動處理了重定向請求了

3.自動處理重定向地址後,咱們就獲取不到重定向後的url了,就沒法走下一步,這裏咱們能夠設置一個參數禁止重定向:allow_redirects=False

allow_redirects=True是啓動重定向),而後就能夠看到status_code是302了

 

 

3、獲取重定向後地址

1.在第一個請求後,服務器會下發一個新的請求連接,在response的headers裏,以下抓包:Location

2.用腳本去獲取Location地址

 

4、參考代碼:

# coding:utf-8import requests# 請求頭headers = {     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"          }s = requests.session()# 打開個人隨筆r = s.get('https://i.cnblogs.com/EditPosts.aspx?opt=1',          headers=headers,          allow_redirects=True,          verify=False)# 打印狀態碼,自動處理重定向請求print r.status_codenew_url = r.headers["Location"]print new_url

相關文章
相關標籤/搜索