在很多時候,發送請求后,服務端會對發送請求方進行身份識別,如果請求中缺少識別信息或存在錯誤的識別信息,
會造成識別失敗。 如一些需要用戶登錄以后才能訪問的頁面。
import requests myaddress_url='http://xxx.com/api/v1/myaddress' myaddress=requests.get(myaddress_url) print(myaddress.status_code) print(myaddress.text) -----結果----- 401 未授權的訪問, 請重新登陸
在用戶登錄的時候,服務器端會向請求方發送一些資料,存在本地,例如cookies,在接下來的某些請求中,都需要帶上cookies,服務器通過cookies內容來辨別
使用者。
那么在python中,是如何在請求中帶入cookies信息的呢,看下面:
import requests login_url='http://xxx.com/api/v1/user/login' userinfo={"ua":"username","pw":"password"} login=requests.post(login_url,json=userinfo) cookies=login.cookies #獲取登錄后的cookies內容 myaddress_url='http://xxxx/api/v1/myaddress' myaddress=requests.get(myaddress_url,cookies=cookies) #在請求中帶入cookies print(myaddress.status_code) print(myaddress.text) -----結果----- 200 {........}
帶入了cookies內容后,可以正常的獲取到想要的響應內容。
在此處雖然可以請求成功,但需要獲取到cookies內容及每次都要發送cookies內容,不是非常方便,因此,接下來我們介紹另外一種方法
使用session類來發送請求:
import requests login_url='http://xxxx/api/v1/user/login' userinfo={"ua":"username","pw":"password"} myaddress_url='http://xxx/api/v1/myaddress' test_session=requests.session() #使用session類生成一個對象 login=test_session.post(login_url,json=userinfo) myaddress=test_session.get(myaddress_url) print(myaddress.status_code) print(myaddress.text) -----結果----- 200 {...}
至此,cookies相關的問題解決