1. 程式人生 > >淘寶自動登入2.0,新增Cookies序列化

淘寶自動登入2.0,新增Cookies序列化

前段時間時間為大家講解了如何使用requests庫模擬登入淘寶,而今天我們將對該功能進行豐富。所以我們把之前的那個版本定為1.0,而今天修改的版本定為2.0。版本的地跌意味著功能的升級,那今天的2.0版本較之前的1.0版本有哪些改進呢?我們一起來看看!

一、1.0版本實現步驟

我們先來回顧一下模擬登入淘寶的步驟吧,我們還是先看看淘寶登入的詳細時序圖:

這是淘寶網登入的一個請求流程,而我們模擬登入也是根據這樣的一個流程。但是在程式碼模擬登入的時候就不會分的這麼細,我們根據封裝的思想將整個登入流程封裝在四個方法裡面,可以看看下圖。

為了便於大家理解四步登入法,豬哥又畫了一個流程圖給大家看看

結合流程圖,給大家簡單 的 再講解一遍這四步具體做了啥:

  1. 拿著使用者名稱向淘寶(taobao.com)發起一個post的請求,判斷是否出現滑塊驗證。
  2. 向淘寶(taobao.com)又發起一個post請求,驗證使用者名稱密碼是否正確,如果正確則返回一個token。
  3. 拿著token去阿里巴巴(alibaba.com)交換st碼。
  4. 獲取st碼之後,拿著st碼獲取cookies,登入成功。

在面試的 時候也許面試官會問你是否爬取或自動登入過淘寶,流程是怎麼的?大家 就這個把這個四步登入法講給面試官聽 ,面試官不僅不會你的技術認可,也為誇張你的邏輯思維縝密!

二、2.0版本新增功能

為什麼要做2.0版本?因為豬哥在做爬取淘寶商品的時候發現之前登入有一個很不方便的 地方:每次程式執行完後,登入的cookies就沒了,也就是說下次又要重新登入。

而瀏覽器卻可以儲存cookies資訊,所以豬哥自然的想到了:將cookies序列化。

序列化 (Serialization)是將物件的狀態資訊轉換為可以儲存或傳輸的形式的過程。——百度百科

簡單說序列化就是將物件永續性儲存起來,因為原來物件是在記憶體中,程式執行完了就要釋放記憶體,所有的物件、變數等都會被清除,而序列化則可以把他們儲存到檔案。即使程式關閉了,下次啟動的時候可以讀取檔案到記憶體轉回物件繼續使用,而這個過程叫反序列化。

所以我們2.0的功能就是:將登入後的cookies儲存到檔案中,下次再登入先從cookies檔案讀取!也就是增加了一個儲存cookies 的功能,我們再看看2.0的流程圖。

與1.0的流程圖相比,其實就多了左邊的cookies檔案和cookies檔案的校驗,這也就是我們今天要講的內容!

別看只是增加了一點點功能,卻意義重大:因為這是一個 授人予漁的功能,你學會之後其他所有的登入都可以做序列化儲存cookies,而且還可以做cookies池!

三、2.0版本新功能實現

根據上面的流程圖,我們可以簡單的分析量化一下增加的儲存cookies這個共功能:

  1. 儲存cookies:增加一個方法,當使用st碼登入成功後,用來將cookies物件轉化為檔案
  2. 讀取cookies:增加一個方法,用來讀取cookies檔案,將它轉化為cookies物件
  3. 檢查cookies:增加一個方法,用來判斷cookies是否失效,如果失效則刪除cookies檔案,如果有效則直接登入成功!

根據以上三步,我們就可以開始擼程式碼了

1.儲存cookies

儲存cookies其實就叫序列化,我們先來看看程式碼:

我們先獲取cookies,然後再轉為dict物件,最後將dict轉化為json物件儲存起來!

2.讀取cookies

讀取cookies就是將檔案轉轉化為cookies物件,這一步叫反序列化,直接上程式碼:

其實反序列化就是與序列化的步驟相反,先將檔案轉化為dict物件,然後再轉化為cookies物件,最後賦值給Session物件!

3.檢查cookies

這一步我們需要先判斷cookies檔案是否存在,如果存在則讀取cookies,之後再訪問淘寶主頁看看是否能成功,如果失敗則說明cookies已過期,我們就刪除cookies檔案。

四、重構程式碼

功能點實現之後我們看看怎麼重構程式碼,根據流程圖,我們需要在方法開頭增加載入cookies的功能,再最後登入成功的時候增加儲存cookies的方法,所以改動只有兩處!

五、功能測試

在我們實際開發工作中 ,測試是一項非常重要的步驟。一般開發都需要先自測,如果不自測就直接提測的話,測試測出bug你不僅會被懟被鄙視有些公司還會影響你的kpi。

我們來說說序列化cookies功能自測的流程吧:

  1. 首先我們登入,看看登入成功會不會將cookies儲存為檔案,這一步是測試序列化
  2. 然後我們再登入一次,根據列印資訊,看看是不是直接讀取cookies檔案登入的,這一步測試反序列化
  3. 最後我們測試當cookies過期之後,會不會刪除cookies檔案,然後使用使用者名稱密碼登入,最後儲存新的cookies檔案

1.測試正常登入

第一次登入是沒有cookies檔案的,所以正常使用使用者名稱和密碼登入,登入成功後儲存cookies檔案。

2.測試載入cookies登入

再正常登入之後,儲存了cookeis檔案,這裡我們要測試是否能成功載入檔案中的cookies。

3.測試cookies過期

大家都知道cookies都會有一個過期時間,而經過豬哥測試淘寶登入的過期時間為xx分鐘!cookies過期之後我們需要重新登入然後重新儲存cookeis檔案。

至此所有的功能點 已經自測完畢,這時候就可以提測給測試人員,而測試人員測試通過之後,便可以上預發環境測試,預發測試通過之後才是正式環境!

現在一般的小功能都在白天釋出了,而比較大的改版還是會安排在深夜,使用者少的時候!

六、總結

今天我們學習瞭如何儲存登入資訊,下期豬哥將會教大家如何爬取淘寶商品資訊並做資料分析,還是挺有意思的,期待吧!

看到很多同學會在學習群裡交流一些豬哥以前寫的案例,感覺自己做的這些教程有意義,看到大家在學習,豬哥心裡超開心!

獲取淘寶自動登入原始碼,請關注vx公眾號「裸睡的豬」回覆 淘寶登