成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python爬蟲必須掌握的概念—Cookie和Session

系統
最近總是有一些初學爬蟲的小伙伴總是搞不懂 Session 和 Cookie 到底是做什么的,為什么爬蟲訪問網頁的時候都用 Session 去訪問,為什么 headers 攜帶 Cookie 就可以以登陸形式進入網頁了,這兩個東西的原理究竟是什么呢?

 

Cookie和Session

  • 前言cookie 和 session 得由來CookieCookie 屬性Cookie 創建Cookie 分類SessionSession 工作原理創建 Session保存 Session銷毀 Session檢查Session 是否失效總結 Cookie Session相同點:不同點:工作流程:

前言

最近總是有一些初學爬蟲的小伙伴總是搞不懂 Session 和 Cookie 到底是做什么的,為什么爬蟲訪問網頁的時候都用 Session 去訪問,為什么 headers 攜帶 Cookie 就可以以登陸形式進入網頁了,這兩個東西的原理究竟是什么呢?

cookie 和 session 的由來

在Web發展史中,我們知道瀏覽器與服務器間采用的是簡單的 http 協議,而這種協議是‘無狀態’的,所以這就導致了服務器無法知道是誰在瀏覽網頁,但很明顯,一些網頁需要知道用戶的狀態,例如登陸,購物車等。

所以為了解決這一問題,先后出現了四種技術,分別是 隱藏表單域 ,URL重寫 ,Cookie ,Session ,當然現階段用的最多的技術自然是 Cookie 和 Session 了。

Cookie

Cookie 是瀏覽器保存到用戶電腦上面的一個文本,簡單來說就是當一個用戶通過 http 請求訪問到服務器端的時候,服務器會將一些字典的鍵值對返回給客戶端瀏覽器,并給這些數據加上一些限制條件,在條件符合時這個用戶下次訪問這個服務器時,數據通過請求頭又被完整地給帶回服務器,服務器根據這些信息來判斷不同的用戶。

簡單來說,Cookie 是服務器傳輸給客戶端并保存到客戶端的一段文本信息, Cookie 是有大小和數量限制的。

Cookie 屬性

當我們訪問網頁的時候,我們看到網站的請求頭如果攜帶 Cookie 都會含有 Set-Cookie 的屬性,在這里分析一下 Set-Cookie 都包含什么屬性項:

屬性項屬性項介紹Name=VALUE鍵值對,可以設置保存的鍵值對屬性,這里的NAME不能和其他屬性的名字相同Expires過期時間,這個時間后Cookie便會失效Domain生成Cookie的域名空間Path這個Cookie在系統哪個文件路徑下生成的Secure加密設置,設置之后只能在SSH連接環境下才能回傳這個Cookie屬性

在這里仔細介紹一下 Domain 究竟是做什么的。

現在假設有兩個域名:

  • 域名A:a.qq.com.cn
  • 域名B:b.qq.com.cn

顯然域名A和域名B都是qq.com.cn的子域名。

  • 如果我們在域名A中的 Cookie 的 domain 設置為 qq.com.cn ,那么 qq.com.cn 及其子域名都可以獲取這個 Cookie,即域名A和域名B都可以獲取這個 Cookie。
  • 如果域名A和域名B同時設置 Cookie 的 doamin 為 qq.com.cn,那么將出現覆蓋的現象。
  • 如果域名A沒有顯式設置 Cookie 的 domain 方法,那么 domain 就為 a.qq.com.cn,不一樣的是,這時,域名A的子域名將無法獲取這個 Cookie。

Cookie 創建

Set-Cookie: value[; expires=date][; domain=domain][; path=path][; secure]

 

  1. Set-Cookie:delPer=0; expires=Thu, 16-Aug-2050 12:15:40 GMT 
  2. Set-Cookie:BDSVRTM=0; path=/ 
  3. Set-Cookie:BD_HOME=0; path=/ 
  4. Set-Cookie:H_PS_PSSID=1462_21106_26925_22074; path=/; domain=.baidu.com 

 

構建http返回字節流時是將 Header 中所有的項順序寫出,而沒有進行任何修改。所以瀏覽器在接收 http 返回的數據時是分別解析每一個 Header 項。

Cookie 分類

  • 會話級別 Cookie:所謂會話級別 Cookie,就是在瀏覽器關閉之后 Cookie 就會失效。
  • 持久級別 Cookie:保存在硬盤的 Cookie,只要設置了過期時間就是硬盤級別 Cookie。

現在 Cookie 保存在了客戶端,當我們去請求一個URL時,瀏覽器會根據這個URL路徑將符合條件的 Cookie 放在請求頭中傳給服務器。

Session

Cookie 是有大小限制和數量限制的,并且越來越多的 Cookie 代表客戶端和服務器的傳輸量增加,可不可以每次傳的時候不傳所有 Cookie 值,而只傳一個唯一ID,通過這個ID直接在服務器查找用戶信息呢?答案是有的,這就是我們的 Session。

Session 是基于 Cookie 來工作的,同一個客戶端每次訪問服務器時,只要當瀏覽器在第一次訪問服務器時,服務器設置一個id并保存一些信息(例如登陸就保存用戶信息,視具體情況),并把這個id通過 Cookie 存到客戶端,客戶端每次和服務器交互時只傳這個id,就可以實現維持瀏覽器和服務器的狀態,而這個ID通常是 NAME 為 JSESSIONID 的一個 Cookie。

現階段一共有四種方法讓 Session 工作:

  • 通過URL傳遞SessionID
  • 通過Cookie傳遞SessionID
  • 通過SSL傳遞SessionID
  • 通過隱藏表單傳遞SessionID

Session 工作原理

 

 

 

 

創建 Session

當客戶端訪問到服務器,服務器會為這個客戶端通過 request.getSession() 方法創建一個 Session ,如果當前 SessionID 還沒有對應的 HttpSession 對象,就創建一個新的,并添加到 org.apache.catalina.Manager 的 Sessions 容器中保存,這就做到了對狀態的保持。當然,這個 SessionID 是唯一的

保存 Session

由圖可知,Session 對象已經保存在了 Manager 類中,StandardManager 作為實現類,通過 requestedSessionId 從 StandardManager 的 Sessions 集合中取出 StandardSession 對象。

我們來看看 StandardManager 是如何對所有 StandardSession 對象進行生命周期管理

當 Servlet 容器關閉:StandardManager 將持久化沒過期的 StandardSession 對象(必須調用 Servlet 容器中的 stop 和 start 命令,不能直接 kill)

當 Servlet 容器重啟時:StandardManager 初始化會重讀這個文件,解析出所有 session 對象。

銷毀 Session

Session 的聲明周期是從創建到超時過期。

也就是說,當 Session 創建后,瀏覽器關閉,會話級別的 Cookie 被銷毀,如果沒有超過設定時間,該 SessionID 對應的 Session 是沒有被銷毀的。

檢查Session 是否失效

檢查每個 Session 是否失效是在 Tomcat 的一個后臺線程完成的( backgroundProcess() 方法中);除了后臺進程檢驗 Session 是否失效外,調用 request.getSession() 也會檢查該 Session 是否過期,當然,調用這種方法如果過期的話又會重新創建一個新的 Session。

總結 Cookie Session

相同點:

  • Session 和 Cookie 都是為了讓 http 協議又狀態而存在。
  • Session 通過 Cookie 工作,Cookie 傳輸的 SessionID 讓 Session 知道這個客戶端到底是誰。

不同點:

  • Session 將信息保存到服務器,Cookie 將信息保存在客戶端。

工作流程:

當瀏覽器第一次訪問服務器時,服務器創建 Session 并將 SessionID 通過 Cookie 帶給瀏覽器保存在客戶端,同時服務器根據業務邏輯保存相應的客戶端信息保存在 Session 中;客戶端在訪問時上傳 Cookie ,服務器得到 Cookie 后獲取里面的 SessionID,來維持狀態。

責任編輯:姜華 來源: 今日頭條
相關推薦

2019-11-12 13:45:11

WebCookieSession

2019-08-15 09:35:03

2025-01-03 09:39:04

2014-08-18 09:31:15

2025-04-09 05:00:00

CookieSession服務器

2024-10-09 15:43:49

2009-08-05 18:30:36

Session和CooASP.NET表單

2019-05-15 15:10:12

Tomcat Session Cookie

2023-10-04 00:05:00

SessionCookie

2023-09-14 11:45:24

HashMap散列表

2020-02-27 15:12:29

cookiesession加密

2019-11-06 17:30:57

cookiesessionWeb

2023-12-04 10:36:46

SessionCookie

2021-09-01 10:15:15

前端cookiesession

2021-03-02 15:00:34

Python爬蟲數據

2020-08-28 13:49:13

數據統計學面試

2014-02-10 10:13:43

2021-12-03 18:04:06

命令 RabbitMQ Web

2023-10-27 08:23:10

CookieWeb存儲

2023-10-24 09:07:14

CookieSessionHTTP
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 伊人婷婷 | 91久色| 国产精品一区二区无线 | 亚洲图片一区二区三区 | 国产精品久久久久久久久久免费 | 国产精品免费在线 | 亚洲一区精品视频 | 亚洲色综合 | 国产精品不卡视频 | 国产一级在线 | 精品免费国产一区二区三区四区 | 免费观看成人av | 久久福利 | 91久久久久久久久久久久久 | 成人免费观看男女羞羞视频 | 精国产品一区二区三区 | 一区视频在线 | 欧美一区二区三区在线看 | 亚洲精品久久久久久久不卡四虎 | 久久久久国产一区二区三区 | 亚洲综合无码一区二区 | 久久黄色精品视频 | 久热精品在线播放 | 免费成人在线网站 | 一区二区三区亚洲精品国 | 韩国久久精品 | 国产视频h| 超碰欧美 | 高清视频一区 | 国产精品久久久久一区二区三区 | 日韩成人在线播放 | 91xxx在线观看| 成年人在线视频 | 91成人精品视频 | www成年人视频 | 我要看黄色录像一级片 | 成人h视频在线观看 | 在线国产一区二区 | 成人精品影院 | 欧美jizzhd精品欧美巨大免费 | 国产精品一区二区三区四区五区 |