requests使用cookie模擬登陸豆瓣

cookie: 一種客戶端會話技術,客戶登錄成功後,服務端將可識別用戶的憑證傳到客戶端,由客戶端負責保存維護。一般會設定一定有效時長,在有效時長內,客戶無需再次進行登錄操作,可直接攜帶cookie登錄。

本文僅演示攜帶cookie登陸,所以cookie通過手動獲取。如何自動獲取豆瓣的cookie,請看 selenium登錄豆瓣網

1、手動登陸,獲取cookie

獲取cookie
手動將cookie複製下來。得到這樣的數據:
name1=data1;name2=data2;name3=data3;…

2、cookie數據解析

將得到的cookie數據,轉爲字典格式

cookie_info = 'name1=data1;name2="data2"'
cookie_list = [info.strip().split('=') for info in cookie_info.split(';')]
cookies = {data[0]:data[1].replace('"','') for data in cookie_list}
print(cookies)

結果:
{'name1': 'data1', 'name2': 'data2'}
3、攜帶cookie登陸
import requests
cookie_info = 'your cookiedata'
cookie_list = [info.strip().split('=') for info in cookie_info.split(';')]
cookies = {data[0]:data[1].replace('"','') for data in cookie_list}
url = 'https://www.douban.com/'
headers = {
            'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5',
        }
html = requests.get(url,headers=headers,cookies=cookies).content.decode()
print(html)

結果:
登陸成功
如圖,在打印的html中能看到自己的賬號名稱,證明登陸成功了。

思考:
登陸成功後,訪問網站的其他頁面,一般也需要攜帶cookie,才能進行訪問。當然,我們可以在每個請求中,都加上cookie,但這無疑顯得有些繁瑣。能否在請求的時候自動攜帶呢?這就需要session來幫忙了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章