1 session與cookie
首先要理解session和cookie的區(qū)別别厘,這是理解模擬登錄和網(wǎng)站交互的基礎(chǔ)怎棱。
cookie是瀏覽器支持的本地存儲方式方淤,是以dict鍵值對的方式存儲的,在瀏覽器文件中是文本的形式蹄殃,瀏覽器會對這個文本進(jìn)行解析。
Http本身是一種無狀態(tài)協(xié)議你踩,服務(wù)器在接收到瀏覽器的請求之后诅岩,直接返回內(nèi)容給瀏覽器讳苦,不管瀏覽器是誰請求的。比如瀏覽新聞的網(wǎng)站吩谦,不在乎是誰發(fā)起的瀏覽請求鸳谜。但是對于像淘寶這種需要記住請求是由哪個對象發(fā)起的時候,無狀態(tài)協(xié)議就不能做到了式廷。
有狀態(tài)請求如下:
cookie的作用就是在瀏覽器A訪問服務(wù)器的時候咐扭,就給這個A一個id,瀏覽器會將這個id保存到本地滑废,cookie中蝗肪,后來的請求都會帶著這個id,瀏覽器就會知道是哪個對象蠕趁。瀏覽器為了安全性薛闪,cookie存儲是有很多要求的,比如服務(wù)器A傳過來的cookie是放在服務(wù)器A的域之下的俺陋,是不能跨域訪問的豁延,這是一種安全機制。
-
當(dāng)你使用瀏覽器訪問一個網(wǎng)站的時候腊状,可能就會返回cookie內(nèi)容诱咏,如果將cookie清空,再次訪問缴挖,還是有信息傳回來袋狞,所以說,cookie是服務(wù)器傳給瀏覽器的醇疼,并且保存在本地
-
即使清空,刷新后還是會生成
比如用處就是硕并,當(dāng)一個用戶用登錄名密碼登陸后,服務(wù)器將這些信息作為cookie返回了秧荆,下一次登錄的時候就可以從本地自動獲取信息進(jìn)行登錄倔毙,不需要再輸用戶名和密碼了。但是乙濒,同時也就出現(xiàn)了安全隱患陕赃,只要有人拿著電腦,就能從本地cookie中查看信息瀏覽記錄等颁股。
有狀態(tài)請求中么库,第一次請求后發(fā)現(xiàn)沒有id,服務(wù)器就會分配一個id甘有,這個id可以是userid诉儒,也可以是任意一段隨機的字符串,可以叫做sessionid亏掀。每個框架生成session的機制是不一樣的忱反,
為了解決cookie的泄露隱患泛释,就產(chǎn)生了session,比如說用戶注冊登錄之后温算,根據(jù)它的用戶名和密碼名生成sessionid怜校,并且將這個id發(fā)給用戶,瀏覽器將這個sessionid存在cookie中注竿,然后再次請求服務(wù)器的時候茄茁,服務(wù)器就知道是誰在請求,取出這個用戶對應(yīng)的信息巩割。
2 cookie與session的主要區(qū)別
- cookie是第一次打開瀏覽器返回信息裙顽,關(guān)閉了瀏覽器下一次再打開瀏覽器時可以攜帶從本地cookie中獲取的信息,從而知道是同一個瀏覽器喂分。而session是在一次打開瀏覽器之后的連續(xù)操作中锦庸,通過服務(wù)器給了指定的會話id,必須每次訪問網(wǎng)址時都攜帶這個sessionid蒲祈,服務(wù)器才知道這個上一個操作是同一個人在完成甘萧。
- cookie是需要去本地獲取,session是會話過程中自動攜帶的梆掸。
- cookie是存放在客戶端的扬卷,session是存在服務(wù)器端的。
服務(wù)器識別同一個操作對象的原理
服務(wù)器中可能有一張session表來記錄訪問的對象酸钦,有session_id怪得,session_data,以及過期時間卑硫,如果當(dāng)前沒有瀏覽器正在訪問這個網(wǎng)站徒恋,那么session表就為空。如果有賬號登錄成功欢伏,這個表中就會有一條記錄入挣,有服務(wù)器給用戶返回的id,有用戶的加密后的數(shù)據(jù)等硝拧。這個sessionid會返回給瀏覽器径筏,保存在cookie當(dāng)中,后面瀏覽器在對這個網(wǎng)站的頁面進(jìn)行訪問的時候都會帶著sessionid障陶,然后服務(wù)器就不需要知道你的用戶名和密碼滋恬,就知道是哪個用戶了。盡管sessionid放在cookie中雖然有過期時間抱究,但是也不安全的恢氯,壞人獲取了sessionid就能瀏覽你的信息了,可是相對于cookie中的賬號名密碼這種而言,還是安全的多酿雪,至少需要用sessionid模擬登錄又或者必須會盜用sessionid遏暴。所以,瀏覽網(wǎng)站最后需要退出登錄指黎,就會清空sessionid信息了。
ssesion技術(shù)
本身有兩部分
知道瀏覽器兩次訪問是同一個人州丹,這是用cookie 保存sessionid實現(xiàn)的
在服務(wù)端的session對象的內(nèi)容醋安,可以訪問到,這些變量信息時存在服務(wù)器的中的墓毒。
3 selenium模擬知乎登錄
-
常見HTTPcode
-
安裝requests庫