通過雲伺服器實現淘寶京東搶拍器
馬上就要雙十一了,想在淘寶上幫女朋友搶一些禮物,網上下載了幾個搶拍器,普遍都有問題,最終還是決定自己製作一個搶拍器。由於秒殺也受到網路和系統環境的影響,這裡打算使用高速穩定點的雲主機來協助實現。
在雲主機的選擇上,必須是能直接連線主幹網路的雲主機,否則網路延遲和在家裡上網區別不大。(開始以為阿里雲秒殺會更快,但實際測試結果並不是這樣。挑了幾次後還是使用了常用的易邁雲。大家可以根據自己的喜好來挑選。)本文在後面會附帶具體操作方法。
一, 秒殺的設計要求:
- 高穩定性,高網速
- 高頻度模擬使用者操作
- 通過阿里京東的認證機制
二, 實現難點:
- 淘寶的認證登入如何解決。
- 部分操作有可能被封號
- 搶拍操作過快可能出現滑塊,導致搶拍失敗。
三, 理論上的幾種方法:
第一種:使用selenium或者類似網頁按鍵的工具模擬瀏覽器提交訂單,優點是製作方便,安全不怕封號,速度也能達到毫秒級。缺點就是當網速卡或者搶的人太多的時候,可能由於網頁元素載入過慢,導致搶拍失敗。
第二種:模擬socket,直接提交訂單包文。優點是速度最快,不需要等待訂單確認介面,到時間直接提交訂單。缺點是製作比較複雜,尤其淘寶會每日更新加密演算法,需要經常更新。據傳有封號的可能性,但是我還沒有被封號過。
下面針對兩種方法分別進行分析:
第一種:模擬瀏覽器操作
工具有很多,selenium和按鍵精靈都可以實現,推薦用selenium, 命令臺操作,執行速度更快。
操作流程如下圖:
網上供參考的程式碼示例:(Python),內容其實都大同小異,關鍵思路清楚就很好做了。
#!/usr/bin/env python # -*- coding: utf-8 -*- #2018/10/313 #淘寶秒殺,掃碼登入版 import os from selenium import webdriver import datetime import time from os import path d = path.dirname(__file__) abspath= path.abspath(d) chromedriver = abspath+"\chromedriver.exe" os.environ["webdriver.chrome.driver"] = chromedriver driver = webdriver.Chrome(chromedriver) driver.maximize_window() def login(): # 開啟淘寶登入頁,並進行掃碼登入 driver.get("https://www.taobao.com") time.sleep(3) if driver.find_element_by_link_text("親,請登入"): driver.find_element_by_link_text("親,請登入").click() print("請在30秒內完成掃碼") time.sleep(30) driver.get("https://cart.taobao.com/cart.htm") time.sleep(5) # 這裡需要自己在購物車裡面選擇要結算的商品 now = datetime.datetime.now() print('login success:', now.strftime('%Y-%m-%d %H:%M:%S')) def buy(buytime): while True: now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') # 判斷時間,時間到就點選結算 if now > buytime: try: # 點選結算按鈕 if driver.find_element_by_id("J_Go"): driver.find_element_by_id("J_Go").click() driver.find_element_by_link_text('提交訂單').click() except: time.sleep(0.1) print(now) time.sleep(0.1) if __name__ == "__main__": times = input("請輸入搶購時間:") login() buy(times)
如果需要打包好的軟體,也可以使用百度雲盤下載:
https://pan.baidu.com/s/1EU5YM3VgXBDgv7v3F5icEg
提取碼:b79e
下面講具體怎麼操作:(感謝網上幾位大大的指導)
- 首先,你得有一臺到多臺雲主機(可以在阿里雲,易邁雲各建一臺雲主機,使用兩個號來搶),這裡僅以我常用易邁雲來舉例,具體使用什麼雲伺服器請自行選擇。不過易邁雲在穩定性和基幹網路方面測試下來還算不錯。參考網址:www.aiemy.com
2.具體購買流程我就不多說了,系統選擇win2012就行。通過遠端桌面登入到伺服器。
將百度雲盤下載的檔案解壓。首先安裝chrome67版(注意不是chromedriver.exe),
接著將taobao.exe和chromedriver.exe放入同一個資料夾下面,雙擊點開taobao.exe
3.輸入搶拍的時間,注意時間格式(不要有中文符號) 年-月-日 時:分:秒 000000
4.回車後會彈出淘寶介面,通過手機掃描二維碼登入。(這樣可以有效避免軟體被人加殼,被盜號的可能性)
6.登入後會自動跳轉到購物車,並全選購物車。如果你不需要購物車全部被選中的話,可以勾掉全選,選擇需要搶的商品。
6.時間到後,系統會自動點選結算和提交訂單。
通過模擬瀏覽器操作的方法暫時講到這裡,理論上是在毫秒級搶拍,1秒內能夠鎖死訂單。最重要的就是兩點:網速和系統處理速度(這裡的網速不是指頻寬,而是從計算機到淘寶核心伺服器間的節點要儘可能的少,這也是為什麼說要用雲伺服器的原因)。下週再更新更快的方案,建議大家準備小號,避免被封。