如何秒下单?python的淘宝秒杀抢购下单源码参考 疫情如期,隔离还在继续,何时工作是一个头大的问题,最近在看口罩,不少电商平台都有放出口罩,当然,手残党将会也会是一直难以下手,你可能很难抢得到,故找了几个关于python的淘宝秒杀抢购下单源码参考,当然本渣渣测试下单成功,但是准点抢购还是没有成功。
你是否有更好的方法或者方案?
关于淘宝下单的思路,鉴于淘宝的厉害,相信基本上都是采用的无头浏览器,即selenium驱动浏览器模拟人工提交订单,如果能够破解下单的post参数是最好不过了,暂未研究!
淘宝下单流程: 第一步:登录 发现微博登录添加了验证码,不知道是不是异地还是更新了,故采用扫码登录。
第二步:购买/结算 其中采用购物车提交的方式会让你感觉流畅不少! 当然也可以直接商品页购买!
第三步:提交订单
第四步:支付订单(秒杀下单)
这里准点下单购买能够走到第三步就成功了,当然还有一个思路就是试试看移动端下单是否更加简单顺畅呢?
python的淘宝秒杀抢购下单源码参考
版本一: 淘宝秒杀购物车下单支付
from?selenium?import?webdriverfrom?selenium.webdriver.support.ui?import?WebDriverWaitimport?requestsfrom?datetime?import?datetime path?=r"C:\Users\Administrator\AppData\Local\Programs\Python\Python36\chromedriver.exe"??#?谷歌chromedriver完整路径#?输入秒杀时间start_time?=?'2020-03-04?14:59:58'#password?=?input("输入付款密码:")print("你只有15秒的登录时间")#?将输入的时间进行格式化timeArray?=?datetime.strptime(start_time,?"%Y-%m-%d?%H:%M:%S")#?用来判断?你是订单提交失败还是支付失败sum?=?0#?设置chrome驱动的路径driver?=?webdriver.Chrome(executable_path=path)#?打开淘宝的登录界面driver.get("https://cart.taobao测试数据/cart.htm")#?最大化浏览器driver.maximize_window()#?判断全选框是否出现?出现则点击全选?否则继续等待?最多等待15秒try: ????WebDriverWait(driver,?15,?0.1).until( ????????lambda?el:?driver.find_element_by_xpath('//*[@id="J_SelectAll1"]/div/label')).click()except: ????print("登录失败")def?time_server(): ????#?获取淘宝服务器的时间戳 ????r1?=?requests.get(url='http://api.m.taobao测试数据/rest/api3.do?api=mtop测试数据mon.getTimestamp', ??????????????????????headers={ ??????????????????????????'User-Agent':?'Mozilla/5.0?(Windows?NT?10.0;?WOW64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/55.0.2883.87?UBrowser/6.2.4098.3?Safari/537.36'} ??????????????????????).json()['data']['t'] ????#?把时间戳格式/1000?获取毫秒 ????timeNum?=?int(r1)?/?1000 ????#?格式化时间?(小数点后6为) ????time1?=?datetime.fromtimestamp(timeNum) ????return?time1#?等待时间到预定的时间print("等待中")while?True: ????#?判断时间服务器时间是否大于或等于输入的时间 ????if?time_server()?>=?timeArray: ????????#?点击结算 ????????driver.find_element_by_xpath('//*[@id="J_Go"]').click() ????????break ????else: ????????continuetry: ????#?判断提交订单的按钮是否出现?出现就点击?否则继续等待?最多等待3秒 ????WebDriverWait(driver,?3,?0.1).until( ????????lambda?el:?driver.find_element_by_xpath('//*[@id="submitOrderPC_1"]/div/a[2]')).click() ????print("订单提交成功") ????print("秒杀成功") ????sum?=?1 ????''' ????#?判断输入密码的框是否出现?出现就输入密码 ????WebDriverWait(driver,?5,?0.1).until( ????????lambda?el:?driver.find_element_by_xpath('//*[@id="submitOrderPC_1"]/div/a[2]')).send_keys(password) ????#?点击确认付款 ????driver.find_element_by_xpath('//*[@id="J_authSubmit"]').click() ????print("付款成功")'''except: ????if?sum?==?0: ????????print("提交订单失败") ????else: ????????print("提交订单失败")
修改来源: [Python] 开源一个python的淘宝秒杀的源码 吾爱论坛 id:牵手丶若相惜
版本二: 购物车提交订单
import?osfrom?selenium?import?webdriverfrom?selenium.webdriver测试数据mon.by?import?Byfrom?selenium.webdriver.support.ui?import?WebDriverWaitfrom?selenium.webdriver.support?import?expected_conditions?as?ECimport?datetimeimport?time#?deckodreiverchromedriver_path?=?r"C:\Users\Administrator\AppData\Local\Programs\Python\Python36\chromedriver.exe"??#?谷歌chromedriver完整路径options?=?webdriver.ChromeOptions()??#?配置?chrome?启动属性options.add_experimental_option("excludeSwitches",['enable-automation'])?#?此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Seleniumdriver=webdriver.Chrome(executable_path=chromedriver_path,options=options)wait=WebDriverWait(driver,10)?#超时时长为10s#登录def?login(): ????driver.get("https://cart.taobao测试数据/cart.htm") ????time.sleep(20) ????sel?=?wait.until(EC.presence_of_element_located((By.ID,?'J_SelectAll2'))) ????sel.click()#下单def?buy(buytime): ????i?=?0 ????while?True: ????????now?=?datetime.datetime.now().strftime('%Y-%m-%d?%H:%M:%S') ????????if?now?>?buytime: ????????????#driver.refresh()??#?刷新页面 ????????????try: ????????????????jss?=wait.until(EC.presence_of_element_located((By.ID,?'J_Go'))) ????????????????jss.click() ????????????????try: ????????????????????tjdd?=wait.until(EC.presence_of_element_located((By.XPATH,?'//div[@class="wrapper"]/a[@class="go-btn"]'))) ????????????????????tjdd.click() ????????????????????now?=?datetime.datetime.now().strftime('%Y-%m-%d?%H:%M:%S') ????????????????????print(f"抢购成功,请尽快付款"+now) ????????????????????break ????????????????except: ????????????????????i=i+1 ????????????????????try: ????????????????????????now?=?datetime.datetime.now().strftime('%Y-%m-%d?%H:%M:%S') ????????????????????????print(f"再次尝试提交订单"?+?now) ????????????????????????driver.refresh()??#?刷新页面 ????????????????????????tjdd?=?wait.until( ????????????????????????????EC.presence_of_element_located((By.XPATH,?'//div[@class="wrapper"]/a[@class="go-btn"]'))) ????????????????????????tjdd.click() ????????????????????????now?=?datetime.datetime.now().strftime('%Y-%m-%d?%H:%M:%S') ????????????????????????print(f"抢购成功,请尽快付款"+now) ????????????????????except: ????????????????????????try: ????????????????????????????i?=?i?+?1 ????????????????????????????now?=?datetime.datetime.now().strftime('%Y-%m-%d?%H:%M:%S') ????????????????????????????print(f"再次尝试提交订单"?+?now) ????????????????????????????driver.refresh()??#?刷新页面 ????????????????????????????tjdd?=?wait.until( ????????????????????????????????EC.presence_of_element_located((By.XPATH,?'//div[@class="wrapper"]/a[@class="go-btn"]'))) ????????????????????????????tjdd.click() ????????????????????????????now?=?datetime.datetime.now().strftime('%Y-%m-%d?%H:%M:%S') ????????????????????????????print(f"抢购成功,请尽快付款"?+?now) ????????????????????????except: ????????????????????????????i?=?i?+?1 ????????????????????????????now?=?datetime.datetime.now().strftime('%Y-%m-%d?%H:%M:%S') ????????????????????????????print(f"再次尝试提交订单"?+?now) ????????????????????????????driver.refresh()??#?刷新页面 ????????????????????????????tjdd?=?wait.until( ????????????????????????????????EC.presence_of_element_located( ????????????????????????????????????(By.XPATH,?'//div[@class="wrapper"]/a[@class="go-btn"]'))) ????????????????????????????tjdd.click() ????????????????????????????now?=?datetime.datetime.now().strftime('%Y-%m-%d?%H:%M:%S') ????????????????????????????print(f"抢购成功,请尽快付款"?+?now) ????????????except: ????????????????driver.get("https://cart.taobao测试数据/cart.htm") ????????????????sel?=?wait.until(EC.presence_of_element_located((By.ID,?'J_SelectAll2'))) ????????????????sel.click() ????????????????jss?=?wait.until(EC.presence_of_element_located((By.ID,?'J_Go'))) ????????????????jss.click() ????????????????now?=?datetime.datetime.now().strftime('%Y-%m-%d?%H:%M:%S') ????????????????print(f"再次尝试提交订单"+now) ????????????????i?=?i?+?1 ????????????????try: ????????????????????tjdd?=wait.until(EC.presence_of_element_located((By.XPATH,?'//div[@class="wrapper"]/a[@class="go-btn"]'))) ????????????????????tjdd.click() ????????????????????now?=?datetime.datetime.now().strftime('%Y-%m-%d?%H:%M:%S') ????????????????????print(f"抢购成功,请尽快付款"+now) ????????????????????break ????????????????except: ????????????????????i?=?i?+?1 ????????????????????try: ????????????????????????now?=?datetime.datetime.now().strftime('%Y-%m-%d?%H:%M:%S') ????????????????????????print(f"再次尝试提交订单"?+?now) ????????????????????????driver.refresh()??#?刷新页面 ????????????????????????tjdd?=?wait.until( ????????????????????????????EC.presence_of_element_located((By.XPATH,?'//div[@class="wrapper"]/a[@class="go-btn"]'))) ????????????????????????tjdd.click() ????????????????????????now?=?datetime.datetime.now().strftime('%Y-%m-%d?%H:%M:%S') ????????????????????????print(f"抢购成功,请尽快付款"+now) ????????????????????????break ????????????????????except: ????????????????????????driver.get("https://cart.taobao测试数据/cart.htm") ????????????????????????sel?=?wait.until(EC.presence_of_element_located((By.ID,?'J_SelectAll2'))) ????????????????????????sel.click() ????????????????????????jss?=?wait.until(EC.presence_of_element_located((By.ID,?'J_Go'))) ????????????????????????jss.click() ????????????????????????now?=?datetime.datetime.now().strftime('%Y-%m-%d?%H:%M:%S') ????????????????????????print(f"再次尝试提交订单"?+?now) ????????????????????????i?=?i?+?1 ????????????????????????now?=?datetime.datetime.now().strftime('%Y-%m-%d?%H:%M:%S') ????????????????????????print(f"再次尝试提交订单"?+?now) ????????????????????????driver.refresh()??#?刷新页面 ????????????????????????tjdd?=?wait.until( ????????????????????????????EC.presence_of_element_located((By.XPATH,?'//div[@class="wrapper"]/a[@class="go-btn"]'))) ????????????????????????tjdd.click() ????????????????????????now?=?datetime.datetime.now().strftime('%Y-%m-%d?%H:%M:%S') ????????????????????????print(f"抢购成功,请尽快付款"?+?now) ????????????????????????break ????????if?i>10: ????????????print(f">>>已经尝试第{i}次抢购,抢购失败,程序终止!") ????????????breakif?__name__=="__main__": ????login() ????buy('2020-03-02?19:59:58')
修改来源: [Python] 某宝秒杀关键模块及思路 吾爱论坛 id:露露的大雕
版本三: 商品页下单立即购买
#淘宝模拟登陆采集阿里商品#?-*-?coding:?utf-8?-*-#20191122?by?微信:huguo00289from?selenium?import?webdriverfrom?selenium.webdriver测试数据mon.by?import?Byfrom?selenium.webdriver.support.ui?import?WebDriverWaitfrom?selenium.webdriver.support?import?expected_conditions?as?ECimport?timeimport?datetime#定义一个taobao类class?taobao_infos: ????#对象初始化 ????def?__init__(self): ????????url='https://login.taobao测试数据/member/login.jhtml' ????????self.url=url ????????options=webdriver.ChromeOptions()?#配置?chrome?启动属性 ????????#options.add_experimental_option("prefs",?{"profile.managed_default_content_settings.images":?2})?#不加载图片,加快访问速度 ????????options.add_experimental_option("excludeSwitches",['enable-automation'])?#?此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium ????????self.browser=webdriver.Chrome(executable_path=chromedriver_path,options=options) ????????self.wait=WebDriverWait(self.browser,10)?#超时时长为10s ????#扫码登陆淘宝 ????def?login(self): ????????#打开网页 ????????self.browser.get(self.url) ????????time.sleep(1) ????????time.sleep(15) ????#打开抢购商品首页 ????def?get_shop(self,shop_url,buytime): ????????print("正在打开需要抢购的页面") ????????self.browser.get(shop_url) ????????while?True: ????????????now?=?datetime.datetime.now().strftime('%Y-%m-%d?%H:%M:%S') ????????????if?now?>?buytime: ????????????????try: ????????????????????#等待购买按钮出现 ????????????????????linkbuy=self.wait.until(EC.presence_of_element_located((By.ID,'J_LinkBuy'))) ????????????????????linkbuy.click() ????????????????????sutj=self.wait.until(EC.presence_of_element_located((By.XPATH,'//div[@class="wrapper"]/a'))) ????????????????????sutj.click() ????????????????????print(f"抢购成功,请尽快付款") ????????????????except: ????????????????????self.browser.refresh()??#?刷新页面 ????????????????????linkbuy?=?self.wait.until(EC.presence_of_element_located((By.ID,?'J_LinkBuy'))) ????????????????????linkbuy.click() ????????????????????sutj?=?self.wait.until(EC.presence_of_element_located((By.XPATH,?'//div[@class="wrapper"]/a'))) ????????????????????sutj.click() ????????????????????print(f"抢购成功,请尽快付款") ????def?gb(self): ????????print(">>>?抢购完毕,关闭浏览器!") ????????self.browser.quit()if?__name__?==?'__main__': ????chromedriver_path?=?r"C:\Users\Administrator\AppData\Local\Programs\Python\Python36\chromedriver.exe"??#谷歌chromedriver完整路径 ????spider=taobao_infos() ????spider.login() ????datetime='2020-03-02?11:59:58' ????shop_url="https://detail.tmall测试数据/item.htm?id=550189462849&price=24.8" ????#shop_url='https://detail.tmall测试数据/item.htm?id=612510400743'?#抢购商品页 ????try: ????????spider.get_shop(shop_url,datetime) ????except: ????????spider.get_shop(shop_url,?datetime) ????spider.gb()
网速比较慢,测试正常下单是基本没问题,可是说到准点抢购下单,还是够呛,如果本地驱动浏览器打开网页秒开的话,是否有很大几率成功呢,这还得测试!!
查看更多关于如何秒下单?python的淘宝秒杀抢购下单源码参考的详细内容...