馬上就要雙十一了,想在淘寶上幫女朋友搶一些禮物,網上下載了幾個搶拍器,普遍都有問題,最終還是決定自己制作一個搶拍器。由於秒殺也受到網絡和系統環境的影響,這里打算使用高速穩定點的雲主機來協助實現。
在雲主機的選擇上,必須是能直接連接主干網絡的雲主機,否則網絡延遲和在家里上網區別不大。(開始以為阿里雲秒殺會更快,但實際測試結果並不是這樣。挑了幾次后還是使用了常用的易邁雲。大家可以根據自己的喜好來挑選。)本文在后面會附帶具體操作方法。
一, 秒殺的設計要求:
- 高穩定性,高網速
- 高頻度模擬用戶操作
- 通過阿里京東的認證機制
二, 實現難點:
- 淘寶的認證登錄如何解決。
- 部分操作有可能被封號
- 搶拍操作過快可能出現滑塊,導致搶拍失敗。
三, 理論上的幾種方法:
第一種:使用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秒內能夠鎖死訂單。最重要的就是兩點:網速和系統處理速度(這里的網速不是指帶寬,而是從計算機到淘寶核心服務器間的節點要盡可能的少,這也是為什么說要用雲服務器的原因)。下周再更新更快的方案,建議大家准備小號,避免被封。