python實現京東秒殺搶購商品操作


【注意更新:抱歉,測試過是不支持熱銷商品秒殺的。發現京東改變了策略,不能直接在購物車中結算了;秒殺商品必須是到商品頁下單,提交訂單,結算,支付。所有有需要有條件的同學可以自行測試改變下流程即可】

1.前言:大表哥最近想買一台筆記本電腦聯想R7000P,但需求量太大,供不應求,每次京東搶購都撲得一場空,2020-10-16 00:00:00又有新的一輪搶購,希望這次能逮着它。想着人為搶購估計還是搶不過那些黃牛,於是用python寫個自動搶購的試試看,看看是否能成功搶到,這也是無奈中的一次嘗試吧。

2.環境配置:

pip3 install selenium
geckodriver-v0.27.0-win64.zip    #下載地址:https://github.com/mozilla/geckodriver/releases
安裝火狐瀏覽器,自行百度下載即可

3.配置geckodriver

下載解壓
拷貝geckodriver.exe到火狐瀏覽器安裝目錄C:\Program Files\Mozilla Firefox\ 下

4.編寫python代碼

#!/usr/bin/env python#
# -*- coding:utf-8 -*-

from selenium import webdriver
import datetime
import time

driver = webdriver.Firefox()

def auto_buy(username, password, purchase_list_time):
    print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "打開登陸界面")
    driver.get("https://passport.jd.com/new/login.aspx")
    print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "開始填寫賬號密碼")
    driver.find_element_by_link_text("賬戶登錄").click()
    driver.find_element_by_name("loginname").send_keys(username)
    driver.find_element_by_name("nloginpwd").send_keys(password)
    driver.find_element_by_id("loginsubmit").click()
    print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "手動拼圖驗證")
    time.sleep(10)  #此處睡眠時間用來手動拼圖驗證
    print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),"登陸成功")
    print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "等待時間到達搶購時間:",purchase_list_time, "......")
    while True:
        count = 0
        for buytime in purchase_list_time:
            nowtime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
            if nowtime == buytime:
                try:
                    count += 1
                    print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "開始第 %s 次搶購......"%count)
                    print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "打開購物車並選中商品")
                    driver.get("https://cart.jd.com/cart.action")  # 打開購物車並選中商品
                    print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "點擊去結算")
                    driver.find_element_by_link_text("去結算").click()  # 去結算
                    print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "點擊提交訂單")
                    time.sleep(5)   #提交訂單前必須等待幾秒【感覺跟電腦性能快慢有關,不卡的電腦可以適當降低嘗試】
                    driver.find_element_by_id('order-submit').click()      #提交訂單
                    print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),"訂單提交成功,請前往訂單中心待付款付款")
                    print("")
                    continue
                except Exception as e:
                    print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "搶購出現異常,重新搶購: ", e)
                    continue
        time.sleep(0.001)

purchase_list_time = [
    "2020-10-16 00:00:00",
    "2020-10-16 00:00:01",
    "2020-10-16 00:00:02",
    "2020-10-16 00:00:03",
    "2020-10-16 00:00:04",
    "2020-10-16 00:00:05",
]
auto_buy('賬號', '密碼', purchase_list_time)

5.注意事項:需要將購物車清空,只留下要買的那一個商品,不然訂單會一下子買完你購物車的商品【條件允許的情況下,還是很舒服的】

6.效果

 

手動拼圖驗證


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM