Python模擬登陸淘寶

最近想爬取淘寶的一些商品,可是發現若是要使用搜索等一些功能時基本都須要登陸,因此就想出一篇模擬登陸淘寶的文章! 瀏覽器

在這裏插入圖片描述
看了下網上有不少關於模擬登陸淘寶,可是基本都是使用scrapy、pyppeteer、selenium等庫來模擬登陸,可是目前咱們尚未講到這些庫,只講了 requests庫,那咱們今天就來使用 requests庫模擬登陸淘寶

講模擬登陸淘寶以前,咱們來回顧一下以前用requests庫模擬登陸豆瓣新浪微博的過程:這一類模擬登陸是比較簡單的登陸,只須要在請求登陸時將用戶名和密碼上傳驗證經過就成功了,也就是說一步到位!微信

而淘寶登陸就比較複雜,爲何說複雜呢?由於淘寶登陸涉及參數多請求不止一次!咱們就先來說講淘寶登陸的流程,先把流程原理搞懂,再去敲代碼,這樣你們就容易理解!cookie

1、淘寶登陸流程

爲了便於你們理解,豬哥畫了一個非標準的淘寶登陸請求時序圖 框架

在這裏插入圖片描述

淘寶ua參數:ua(User-Agent)故名用戶代理,淘寶的ua參數加入了瀏覽器、ip、電腦、時間等信息,而後加密生成,在不少地方使用,不只僅是登陸!scrapy

上圖是比較詳細的流程圖,從代碼層面考慮豬哥將模擬登陸淘寶分爲如下四個步驟工具

  1. 輸入用戶名後,瀏覽器會向淘寶(taobao.com)發起一個post的請求,判斷是否出現滑塊驗證!
  2. 用戶輸入密碼後,瀏覽器向淘寶(taobao.com)又發起一個post請求,驗證用戶名密碼是否正確,若是正確則返回一個token。
  3. 瀏覽器拿着token去阿里巴巴(alibaba.com)交換st碼!
  4. 瀏覽器獲取st碼以後,拿着st碼獲取cookies,登陸成功

這裏也許有同窗會提出疑問:爲何淘寶(taobao.com)驗證經過以後還要拿着 token去阿里巴巴(alibaba.com)交換st碼呢? 這個咱們放後面講!post

2、模擬登陸實現

上面咱們只講了大概的登陸流程,這裏豬哥會先詳細講解下每一步的操做,而後再貼出實現代碼!加密

1.判斷是否須要驗證碼

目前咱們在登陸淘寶的時候,大多數狀況下是不會出現滑塊驗證碼,豬哥嘗試了不少次的登陸退出也只是在中間出現過一次,那到底是什麼在控制是否須要滑塊驗證碼的呢? .net

在這裏插入圖片描述
從上圖能夠看出,當豬哥輸入用戶名後,瀏覽器就會發起一個post請求,來驗證是否須要出現滑塊驗證碼,若是返回true,滑塊驗證碼則出現!不然不出現,通常是不會出現!

圖中咱們能夠看到此次post請求上傳了兩個參數:username、ua設計

前面豬哥說過ua爲瀏覽器、ip、設備信息等多信息加密參數,因此豬哥猜測淘寶的驗證碼是否出現不只僅從帳號角度,還有ip、設備等角度!

舉個例子:某臺設備可能出現登陸過大量的帳號,這時候淘寶就能夠從ua參數中獲取設備號,而後對該設備進行限制!

知道了流程和請求連接及參數以後,咱們就能夠用代碼來請求了!

在這裏插入圖片描述

2.驗證用戶名密碼

這裏一步也就是上面時序圖圖中的第5步:請求登陸,這裏會將用戶名、ua參數、加密密碼等30十幾個參數post到淘寶(taobao.com)去驗證。

在這裏插入圖片描述
咱們來用代碼實現一下,你們別被這麼多參數嚇到,都是從瀏覽器複製過來的!
在這裏插入圖片描述
看看請求結果!
在這裏插入圖片描述
能夠看到申請st碼連接後面帶了一個token,具體token是幹什麼用的後面咱們再分析!

3.申請st碼

上面咱們已經申請到了淘寶(taobao.com)的token,這一步就是用token來換取st碼。

到這裏不少人可能會有疑問:爲何淘寶登陸須要這麼麻煩呢?直接在 taobao.com 登陸不就能夠嗎?爲何要先在taobao驗證用戶名密碼,經過以後再去 alibaba.com 換取st碼登陸呢?

任何公司的框架都是慢慢演變的結果,我想最開始的淘寶登陸確定沒這麼複雜。可是隨着阿里巴巴的慢慢壯大,不少事業線都劃分開來,可是這些事業線之間又有關聯性,好比用戶登陸了淘寶帳號以後天貓就不須要再登陸了呢?(注意淘寶和天貓的頂級域名不一樣,因此不能共享cookis)爲了解決這個問題,單點登陸就出現了。

單點登陸(Single Sign On),簡稱爲 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,用戶只須要登陸一次就能夠訪問全部相互信任的應用系統。 ——百度百科

不少大企業幾乎都有作單點登陸,那阿里的單點登陸系統確定是由母公司阿里巴巴(alibaba.com)來作啦,全部子公司去調用母公司接口!

咱們再回來分析淘寶登陸爲什麼要如此複雜就很好理解了:用戶數據在淘寶這裏,因此須要如今淘寶(taobao.com)驗證用戶名和密碼,驗證經過生成一個token,瀏覽器拿着token去和阿里巴巴(alibaba.com)申請單點登陸碼(st碼),阿里巴巴收到請求驗證token經過則返回st碼,因此用token換st碼的緣由就在於單點登陸!

理解了設計原理以後,代碼實現起來就很清晰了!

在這裏插入圖片描述

4.使用st碼登陸

成功獲取st碼以後咱們就能夠來登陸了,這一步是經過st碼獲取登陸的cookies。

在這裏插入圖片描述
到這裏咱們就已經模擬登陸淘寶成功了!

5.獲取淘寶暱稱

其實上面咱們就已經登陸淘寶成功並返回用戶主頁的連接,咱們爲了進一步驗證登陸成功,就請求一下淘寶用戶主頁,順便把淘寶暱稱提取出來吧!

在這裏插入圖片描述

3、總結

總體講完以後咱們來稍微總結一下吧,主要從代碼結構存在的問題兩個方面說下:

1.代碼結構

來放出一張代碼結構圖,讓你們直觀瞭解

在這裏插入圖片描述
這就是咱們前面說過的模擬登陸淘寶的四個步驟,不過這裏咱們是用代碼實現了!

2.存在問題

在寫這篇教程以前豬哥也是先在網上了解,而後本身用瀏覽器和抓包工具(Charles)一步一步實踐,最重要的是你先要了解淘寶登陸的大概流程,否則你實際操做起來會一頭霧水,下面就要講講目前遇到的問題和存在的問題吧

  1. 首先第一個問題即是淘寶的滑塊解鎖,目前requests尚未很好的破解辦法,後面介紹了一些爬蟲框架以後咱們再來破解吧!
  2. 豬哥嘗試了不少次(50次以上)登陸退出都沒出現過滑塊驗證碼。
  3. 網上有人使用代理ip,這裏豬哥也沒用,只要你不是超級超級超級頻繁且大量爬取數據,通常大廠都不太會去封ip,由於有誤傷率和影響用戶面太廣,也許一封就是整個小區。
  4. 在第二步驗證用戶名和密碼時,上傳了近30個參數,若是你把username、ua、加密密碼複製進去驗證仍是不經過可嘗試把那30個參數換成你瀏覽器中的!
  5. 在第三步和第四步偶爾會出現一次錯誤,重試一下就能夠!

看到這裏是否是感受淘寶模擬登陸就清晰明瞭不少了,感興趣的同窗能夠收藏轉發,週末有空本身嘗試一下。征服淘寶登陸,其餘登陸也就相對簡單了!

源碼地址:關注微信公衆號「裸睡的豬」,回覆:模擬登陸淘寶

相關文章
相關標籤/搜索