近想爬取淘寶的一些商品,但是發現如果要使用搜索等一些功能時基本都需要登錄,所以就想出一篇模擬登錄淘寶的文章!
淘寶登錄就比較復雜,為什么說復雜呢?因為淘寶登錄涉及參數多且請求不止一次!我們就先來講講淘寶登錄的流程,先把流程原理搞懂,再去敲代碼,這樣大家就容易理解!
一、淘寶登錄流程
為了便于大家理解,畫了一個非標準的淘寶登錄請求時序圖
淘寶ua參數:ua(User-Agent)故名用戶代理,淘寶的ua參數加入了瀏覽器、ip、電腦、時間等信息,然后加密生成,在很多地方使用,不僅僅是登錄!
上圖是比較詳細的流程圖,從代碼層面考慮將模擬登錄淘寶分為以下四個步驟:
1、輸入用戶名后,瀏覽器會向淘寶(taobao.com)發起一個post的請求,判斷是否出現滑塊驗證!
2、用戶輸入密碼后,瀏覽器向淘寶(taobao.com)又發起一個post請求,驗證用戶名密碼是否正確,如果正確則返回一個token。
3、瀏覽器拿著token去阿里巴巴(alibaba.com)交換st碼!
4、瀏覽器獲取st碼之后,拿著st碼獲取cookies,登錄成功
這里也許有同學會提出疑問:為什么淘寶(taobao.com)驗證通過之后還要拿著 token去阿里巴巴(alibaba.com)交換st碼呢? 這個我們放后面講!
二、模擬登錄實現
上面我們只講了大概的登錄流程,這里豬哥會先詳細講解下每一步的操作,然后再貼出實現代碼!
1.判斷是否需要驗證碼
目前我們在登錄淘寶的時候,大多數情況下是不會出現滑塊驗證碼,豬哥嘗試了很多次的登錄退出也只是在中間出現過一次,那究竟是什么在控制是否需要滑塊驗證碼的呢?
從上圖可以看出,當輸入用戶名后,瀏覽器就會發起一個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.獲取淘寶昵稱
其實上面我們就已經登錄淘寶成功并返回用戶主頁的鏈接,我們為了進一步驗證登錄成功,就請求一下淘寶用戶主頁,順便把淘寶昵稱提取出來吧!
三、總結
整體講完之后我們來稍微總結一下吧,主要從代碼結構和存在的問題兩個方面說下:
1.代碼結構
來放出一張代碼結構圖,讓大家直觀了解
這就是我們前面說過的模擬登錄淘寶的四個步驟,不過這里我們是用代碼實現了!
完整代碼
gt;>閱讀前請點擊右上角【關注】海潮說電商頭條號,每天收獲社交電商干貨內容。
1、淘搶購
淘搶購官方報名入口,[信譽要求:≥3鉆;天貓]
http://www.taobao-taoqianggou.com/bao/index.html
2、卷皮
卷皮促銷平臺,[信譽要求:≥1鉆]
http://hezuo.juanpi.com/
3、惠品折
原會員購促銷平臺,[信譽要求:≥1鉆+店鋪總銷量大
http://sj.huipinzhe.com/intro.html
4、1折網
1折網促銷平臺,[信譽要求:淘寶;天貓]
http://www.1zw.com/
5、折800
折800促銷平臺,[信譽要求:≥1鉆]
https://zhaoshang.zhe800.com/
6、天天特價
淘寶官方天天特價平臺,[信譽要求:3心—5鉆]
http://www.taoqingchang.com/baoming/index
7、返利網
返利網促銷平臺,[信譽要求:≥1鉆]
https://super.fanli.com/apply/landing
8、試客聯盟
試客聯盟促銷平臺,以免費試用為主
http://www.shikee.com/
9、唯品會
唯品會站外平臺,[信譽要求:無]
http://support.vip.com/investment/index.php
10、淘粉吧
淘粉吧促銷平臺,[信譽要求:≥1藍冠]
http://baoming.taofen8.com/
11、利趣網
利趣網促銷平臺,[信譽要求:≥1鉆]
http://www.liqu.com/seller
【關注、轉評】后私信送運營數據分析表格一套。
我是海潮,洪海龍騰,助力中國電商!
雙十二不是馬上就來了。雙十一的時候不是買買買,心痛的不行。但是看到她開心又很開心,所以很是猶豫!一方面是她衣服實在太多了,并不是小編舍不得給女朋友買!主要衣柜都放不下了,還是要買!難道這是女人的天性嗎?為了節制女朋友控制不住自己的手,所以我只能用Python來模擬登陸淘寶,然后把女朋友加入購物車的衣服鞋子,包包口紅?;瘖y品!全部給清空,她并不知道是怎么就清空了!所以各位大佬,千萬別在下面評論出是我清空的言論?。≡蹅兌际菫榱俗约汉?。我把技術也教給你了!私信我 007 可獲取源碼!
試驗了一個晚上,python的小爬蟲還是挺可愛的,簡單幾行就可以抓取網頁了。如果你和我一樣是新手,你可以先去http://blog.csdn.net/column/details/why-bug.html了解一下爬蟲和網絡的基本知識。強調一下,這個爬蟲和搜索引擎的爬蟲是有區別的。搜索引擎的爬蟲是一種對圖的遍歷,沿著超鏈接不斷爬取整個網絡。我們的小爬蟲很懶惰,只爬取我們指定的url,下面就是對淘寶實現模擬登錄。
代碼不對,整個的關鍵就在于post_data,其實就是把程序模擬成瀏覽器,post_data就是你點擊登錄按鈕時,瀏覽器向服務器發送的登錄信息。你可以用瀏覽器打開登錄界面,單擊右鍵選擇查看元素,在下面的頁面代碼上就可以看到兩個輸入框一個叫TPL_username一個叫TPL_password。具體看圖:
他告訴我們信息發往何方/memer/login.jhtml,怎樣傳遞參數post。你想登陸的大部分網頁都是這樣的。剩下的部分就是常規爬網頁,但是
opener.addheaders=[('User-agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13')]
是比較重要的,否則會讓你輸入驗證碼,這樣就把你的程序模擬成了瀏覽器。接下來就是解碼,淘寶使用的gbk編碼。所以打印的時需要使用gbk解碼。
最后介紹一下cookie的使用,我們在一開始先聲明了一個空的cookie,打印為空。當帶著這個空的cookie登錄后,他就有了數據。
你可以打印看看。其實最容易爬取的是學校的選課系統,我們學校的選課系統的cookie就是學號加上一個序列號了。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。