├── Jingdong_buy ├── Jingdong_ticket └── README.md /Jingdong_buy: -------------------------------------------------------------------------------- 1 | import datetime 2 | import time 3 | from selenium import webdriver 4 | from selenium.webdriver.common.by import By 5 | 6 | def login(): 7 | # 打开京东登录页,并进行登录 8 | browser.get("https://passport.jd.com/new/login.aspx") 9 | # 检查是否登录成功 10 | while True: 11 | try: 12 | if browser.find_element(by=By.LINK_TEXT, value="登录页面,调查问卷"): 13 | now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') 14 | print("======请登录,请不要手动跳转到其他界面 时间:%s" % now) 15 | time.sleep(1) 16 | except: 17 | now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') 18 | print("======登录成功,请不要手动跳转到其他界面 时间:%s" % now) 19 | # 打开购物车界面 20 | browser.get("https://cart.jd.com") 21 | time.sleep(1) 22 | break 23 | 24 | def picking(method): 25 | # 全选购物车 26 | if method == 1: 27 | if browser.find_element(by=By.NAME, value="select-all"): 28 | browser.find_element(by=By.NAME, value="select-all").click() 29 | time.sleep(1) 30 | sum = browser.find_element(by=By.CLASS_NAME, value="amount-sum") 31 | if sum.text == "已选择0件商品": 32 | if browser.find_element(by=By.NAME, value="select-all"): 33 | browser.find_element(by=By.NAME, value="select-all").click() 34 | now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') 35 | print("======全选成功",sum.text,"时间:%s" % now) 36 | else: 37 | now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') 38 | sum = browser.find_element(by=By.CLASS_NAME, value="amount-sum") 39 | print("======全选成功"," 时间:%s" % now) 40 | while True: 41 | sum = browser.find_element(by=By.CLASS_NAME, value="amount-sum") 42 | if sum.text == "已选择0件商品": 43 | now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') 44 | print("======未勾选商品,请勾选 时间:%s" % now) 45 | print("按回车键继续") 46 | input() 47 | else: 48 | while True: 49 | # 确认是否抢购 50 | sum = browser.find_element(by=By.CLASS_NAME, value="amount-sum") 51 | print("======",sum.text,"时间:%s" % now) 52 | print("开始抢购请输入“1”,继续勾选请输入“0”") 53 | a = input() 54 | if a == "1": 55 | break 56 | else: 57 | print("请勾选商品 时间:%s" % now) 58 | print("按回车键继续") 59 | input() 60 | break 61 | 62 | # 手动选择商品 63 | if method == 0: 64 | now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') 65 | print("======请勾选商品 时间:%s" % now) 66 | print("按回车键继续") 67 | input() 68 | # 检查是否已经勾选 69 | while True: 70 | sum = browser.find_element(by=By.CLASS_NAME, value="amount-sum") 71 | if sum.text == "已选择0件商品": 72 | now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') 73 | print("======未勾选商品,请勾选 时间:%s" % now) 74 | print("按回车键继续") 75 | input() 76 | else: 77 | while True: 78 | # 确认是否抢购 79 | sum = browser.find_element(by=By.CLASS_NAME, value="amount-sum") 80 | print("======",sum.text,"时间:%s" % now) 81 | print("开始抢购请输入“1”,继续勾选请输入“0”") 82 | a = input() 83 | if a == "1": 84 | break 85 | else: 86 | print("请勾选商品 时间:%s" % now) 87 | print("按回车键继续") 88 | input() 89 | break 90 | 91 | def buy(times,speed): 92 | while True: 93 | now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') 94 | # 对比时间,时间到的话就点击结算 95 | print(now) 96 | if now >= times: 97 | # 点击结算按钮 98 | while True: 99 | try: 100 | if browser.find_element(by=By.LINK_TEXT, value="去结算"): 101 | browser.find_element(by=By.LINK_TEXT, value="去结算").click() 102 | except: 103 | now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') 104 | print("======结算成功 时间:%s" % now) 105 | break 106 | # 点击提交订单按钮 107 | while True: 108 | try: 109 | if browser.find_element(by=By.ID, value="order-submit"): 110 | browser.find_element(by=By.ID, value="order-submit").click() 111 | except: 112 | now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') 113 | print("======提交订单成功,请手动输入密码支付 时间:%s" % now) 114 | break 115 | break 116 | else: 117 | time.sleep(speed) 118 | 119 | # 定位元素方式三种任何一个都可以使用过,实际使用自由组合。 120 | # (1)id定位 driver.find_element(by=By.ID,"id") 121 | # (2)name定位 driver.find_element(by=By.NAME,"name") 122 | # (3)class定位 driver.find_element(by=By.Class_NAME,"class_name") 123 | 124 | # 抢购主函数 125 | if __name__ == "__main__": 126 | times = input("请输入抢购时间,格式如(2022-06-15 20:00:00.000000):") 127 | speed = int(input("请输入延迟时间,单位毫秒,只需输入数字:"))/1000 128 | location = input("请手动设置默收货地址,按回车继续") 129 | browser = webdriver.Chrome() 130 | browser.set_window_size(1024,768) 131 | login() 132 | method = int(input("全选购物车请输入“1”,否则输入“0”:")) 133 | picking(method) 134 | buy(times,speed) 135 | -------------------------------------------------------------------------------- /Jingdong_ticket: -------------------------------------------------------------------------------- 1 | import time 2 | import datetime 3 | import requests 4 | from threading import Thread 5 | 6 | 7 | url = '填写券的api' 8 | headers = { 9 | 'User-Agent': '填写你的user-agent', 10 | 'Cookie': '填写你的cookies' 11 | } 12 | 13 | def post_cookies(times, speed): 14 | while True: 15 | now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') 16 | print(now) 17 | if now >= times: 18 | while True: 19 | r = requests.get(url, headers=headers) 20 | print(r.text) 21 | if r.text.__contains__("抢完") or r.text.__contains__("失败"): 22 | continue 23 | else: 24 | break 25 | break 26 | else: 27 | time.sleep(speed) 28 | 29 | if __name__ == "__main__": 30 | times = input("请输入抢购时间,格式如(2022-06-15 20:00:00.000000):") 31 | speed = int(input("请输入延迟时间,单位毫秒,只需输入数字:")) / 1000 32 | post_cookies(times,speed) 33 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 京东 抢购 抢券 脚本 秒杀 2 | 京东 抢购 抢券 脚本 秒杀 3 | 使用方法请参考https://blog.csdn.net/weixin_45020214/article/details/123938592 4 | 5 | python 3.10 6 | 7 | 依赖 8 | 9 | 抢购: 10 | 11 | pip install selenium 12 | 13 | pip install datetime 14 | 15 | 抢券: 16 | 17 | pip install requests 18 | 19 | pip install datetime 20 | 21 | 抢券目前单线程,后续开发多线程 22 | 23 | 59-20的券api:https://api.m.jd.com/client.action?functionId=newBabelAwardCollection&body={%22activityId%22:%22csTQSAnfQypSN7KeyCwJWthE6aV%22,%22from%22:%22H5node%22,%22scene%22:%221%22,%22args%22:%22key=m1a5teeereibadl8c9m9s812171a4448,roleId=76866119%22}&client=wh5 24 | --------------------------------------------------------------------------------