Urllib庫的使用八---進階三(Cookie設(shè)置)

Cookie 是指某些網(wǎng)站服務(wù)器為了辨別用戶身份和進行Session跟蹤,而儲存在用戶瀏覽器上的文本文件,Cookie可以保持登錄信息到用戶下次與服務(wù)器的會話。

Cookie原理 HTTP是無狀態(tài)的面向連接的協(xié)議, 為了保持連接狀態(tài), 引入了Cookie機制 Cookie是http消息頭中的一種屬性,包括:

Name Cookie名字
Value Cookie的值
Expires/Max-Age Cookie的過期時間
Path Cookie作用路徑
Domain Cookie所在域名
使用Cookie進行安全連接(Secure),指的是該cookies是否能僅能夠被安全協(xié)議傳輸。
sameSite是否是同一個站點
  • 前兩個參數(shù)是Cookie應(yīng)用的必要條件,另外,還包括Cookie大?。⊿ize,不同瀏覽器對Cookie個數(shù)及大小限制是有差異的)。

Cookies保持狀態(tài)

  • 當(dāng)客戶端第一次請求服務(wù)器時,服務(wù)器會返回一個請求頭中帶有Set-Cookie字段的響應(yīng)給客戶端,用來標記是哪一個用戶,客戶端瀏覽器會把Cookies保存起來。當(dāng)瀏覽器下一次再請求該網(wǎng)站時,瀏覽器會把此Cookies放到請求頭一起提交給服務(wù)器,Cookies攜帶了會話ID信息,服務(wù)器檢查該Cookies即可找到對應(yīng)的會話是什么,然后再判斷會話來以此來辨認用戶狀態(tài)。

  • 在成功登錄某個網(wǎng)站時,服務(wù)器會告訴客戶端設(shè)置哪些Cookies信息,在后續(xù)訪問頁面時客戶端會把Cookies發(fā)送給服務(wù)器,服務(wù)器再找到對應(yīng)的會話加以判斷。如果會話中的某些設(shè)置登錄狀態(tài)的變量是有效的,那就證明用戶處于登錄狀態(tài),此時返回登錄之后才可以查看的網(wǎng)頁內(nèi)容,瀏覽器再進行解析便可以看到了。

  • 反之,如果傳給服務(wù)器的Cookies是無效的,或者會話已經(jīng)過期了,我們將不能繼續(xù)訪問頁面,此時可能會收到錯誤的響應(yīng)或者跳轉(zhuǎn)到登錄頁面重新登錄。

  • 所以,Cookies和會話需要配合,一個處于客戶端,一個處于服務(wù)端,二者共同協(xié)作,就實現(xiàn)了登錄會話控制。

Cookie由變量名和值組成,根據(jù) Netscape公司的規(guī)定,Cookie格式如下:

Set-Cookie: NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE

Cookie應(yīng)用 Cookies在爬蟲方面最典型的應(yīng)用是判定注冊用戶是否已經(jīng)登錄網(wǎng)站,用戶可能會得到提示,是否在下一次進入此網(wǎng)站時保留用戶信息以便簡化登錄手續(xù)。

實例

對人人網(wǎng)進行模擬登錄
0F9AAB1B-F733-471A-9447-9AE6C6636417
獲取到一個有登錄信息的Cookie模擬登陸
# -*- coding:utf-8 -*-
import urllib.request

url = 'http://www.renren.com/'

#根據(jù)剛才的登錄信息來構(gòu)建一個已經(jīng)登錄過的用戶的headers信息

headers = {
    'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
    'User-Agent':' Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:59.0) Gecko/20100101 Firefox/59.0',
    'Upgrade-Insecure-Requests':'1',
    'Connection':'keep-alive',
    'Host':'www.renren.com',
    'Cookie':'anonymid=jgoj4xlw-3izsk4; depovince=BJ; jebecookies=62d94404-de1f-450a-919b-a2d9f4c8b811|||||; _r01_=1; JSESSIONID=abchsGLNgne0L8_wz2Emw; ick_login=cf54f2dc-8b0b-417a-96b2-32d4051f7236; jebe_key=02cb19ad-2966-4641-8828-217160ca67a0%7Cba6f6d6ec917200a4e17a85dbfe33a4a%7C1525230975024%7C1%7C1525230982574; t=87a502d75601f8e8c0c6e0f79c7c07c14; societyguester=87a502d75601f8e8c0c6e0f79c7c07c14; id=965706174; xnsid=e1264d85; ver=7.0; loginfrom=null; wp_fold=0',
}

# 2. 通過headers里的報頭信息(主要是Cookie信息),構(gòu)建Request對象
request = urllib.request.Request(url, headers=headers)

# 3. 直接訪問renren主頁,服務(wù)器會根據(jù)headers報頭信息(主要是Cookie信息)
#,判斷這是一個已經(jīng)登錄的用戶,并返回相應(yīng)的頁面
response = urllib.request.urlopen(request)

# 4. 打印響應(yīng)內(nèi)容
print (response.read().decode())
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 會話(Session)跟蹤是Web程序中常用的技術(shù),用來跟蹤用戶的整個會話。常用的會話跟蹤技術(shù)是Cookie與Se...
    chinariver閱讀 5,783評論 1 49
  • 目錄Cookie機制什么是CookieCookie的不可跨域名性Unicode編碼:保存中文BASE64編碼:保存...
    Tomatoro閱讀 17,042評論 7 186
  • 作者:靜怡,國家二級心理咨詢師,薩提亞模式家庭治療師 編注:本文來自心理咨詢師靜怡的真實案例,全部文字經(jīng)過案主本人...
    心理師靜怡閱讀 2,092評論 0 0
  • 多年前有一個女孩子,跟父親一起經(jīng)歷了一場屠殺之后格外的偏愛紅衣服,他們可能都是鬼,住在森林的深處,尤其是女孩子,執(zhí)...
    啊小美閱讀 284評論 0 2
  • 我可以讓自己對生活時時刻刻保持著覺知、覺察的練習(xí),使覺察成為像呼吸一樣日常的存在,下功夫練習(xí)。有很多時刻會忘記去做...
    拾光小世界閱讀 477評論 0 1

友情鏈接更多精彩內(nèi)容