python抢购软件/插件/脚本附完整源码
作者:白夜鬼魅 发布时间:2021-04-25 22:03:17
标签:python,抢购,源码
距上篇关于淘宝抢购源码的文章已经过去五个月了,五个月来我通过不停的学习,掌握了更深层的抢购技术及原理,而上篇文章中我仅分享了关于加入购物车的商品的抢购源码,且有部分不足。
博主不提供任何服务器端程序,也不提供任何收费抢购软件。该文章仅作为学习selenium框架及GUI开发的一个示例代码。该思路可运用到其他任何网站,京东,天猫,淘宝均可使用,且不属于 * 或者软件之类,只属于一个自动化点击工具,如有侵犯到任何公司的合法权益,请私信联系,会第一时间将相关代码给予删除。
本篇文章我将附上完整源码,及其图形化开发的源码,及加密源码。代码稍长,如有疑惑可站内私信联系博主。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#made in white-night
#coding=utf-8
import re
from PyQt5.QtWidgets import *
import sys
from PyQt5 import QtCore, QtWidgets
from selenium import webdriver
import datetime
import time
import threading
import wmi
class LoginDlg(QDialog):
def __init__(self, parent=None):
super(LoginDlg, self).__init__(parent)
usr = QLabel("请选择抢购方式:")
pwd = QLabel("请输入抢购时间:")
self.lineEdit = QLineEdit("",self)
self.lb0 = QLabel("请输入待抢购网址:", self)
self.lbl = QLabel("等待选择抢购方案", self)
self.lb2 = QLabel("机器码:", self)
self.lb3 = QLabel("授权码:", self)
self.lb4 = QLabel("(获取授权请加群:462510942)", self)
self.lb5 = QLabel("(请勿更改机器码,否则无法授权)", self)
self.lineEdit2 = QLineEdit("", self)
self.lineEdit1 = QLineEdit("", self)
self.combo = QComboBox(self)
self.combo.addItem("0、请选择抢购方案")
self.combo.addItem("1、加购物车")
self.combo.addItem("2、不加购物车")
self.combo.addItem("3、抢购优惠券")
# self.lineEdit.move(200,100)
self.lb0.move(50, 100)
self.lbl.move(50, 150)
self.lb2.move(50, 200)
self.lb3.move(50, 250)
self.lb4.move(250, 250)
self.lb5.move(250, 200)
self.lineEdit2.move(100, 200)
self.lineEdit1.move(100, 250)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('QComboBox')
self.show()
self.dateTimeEdit = QtWidgets.QDateTimeEdit()
self.dateTimeEdit.setGeometry(QtCore.QRect(140, 50, 121, 22))
self.dateTimeEdit.setDateTime(QtCore.QDateTime(QtCore.QDate(2018, 11, 1), QtCore.QTime(9, 0, 0)))
self.dateTimeEdit.setObjectName("dateTimeEdit")
gridLayout = QGridLayout()
gridLayout.addWidget(usr, 0, 0, 1, 1)
gridLayout.addWidget(pwd, 1, 0, 1, 1)
gridLayout.addWidget(self.lb0, 2, 0, 1, 1)
gridLayout.addWidget(self.combo, 0, 1, 1, 3)
gridLayout.addWidget(self.dateTimeEdit, 1, 1, 1, 3)
gridLayout.addWidget(self.lineEdit, 2, 1, 1, 3)
sqBtn = QPushButton("授权")
okBtn = QPushButton("确定")
cancelBtn = QPushButton("关闭软件")
btnLayout = QHBoxLayout()
btnLayout.setSpacing(60)
btnLayout.addWidget(okBtn)
btnLayout.addWidget(cancelBtn)
btnLayout.addWidget(sqBtn)
dlgLayout = QVBoxLayout()
dlgLayout.setContentsMargins(40, 40, 40, 40)
dlgLayout.addLayout(gridLayout)
dlgLayout.addStretch(40)
dlgLayout.addLayout(btnLayout)
self.setLayout(dlgLayout)
okBtn.clicked.connect(self.accept)
cancelBtn.clicked.connect(self.reject)
sqBtn.clicked.connect(self.cpuid)
self.setWindowTitle("VN辅助抢购软件")
self.resize(600, 400)
self.thread_handle = None
def thread_function(self,index):
# 需要在线程加一个全局变量的判断 用于终止死循环 用来切换方案
data = self.cpuid1[2] + self.cpuid1[5] + min(self.cpuid1) + self.cpuid1[-5] + self.cpuid1[1] + self.cpuid1[3] + self.cpuid1[4] + max(self.cpuid1) + self.cpuid1[1] + \
self.cpuid1[-1] + self.cpuid1[-3] + "V" + "N" + self.cpuid1[-2] + self.cpuid1[0] + self.cpuid1[-4]
if self.lineEdit1.text() == data and self.lineEdit2.text() == self.cpuid1:
if index==0:
self.lbl.setText("请选择抢购方案,然后点击确定")
elif index==1:
self.lbl.setText("成功调用加购物车方案")
self.gouwubuy()
elif index==2:
self.lbl.setText("成功调用不加购物车方案")
self.buy()
else:
self.lbl.setText("成功调用抢券方案")
self.quanbuy()
else:
self.lbl.setText("请输入正确的授权码")
def accept(self):
# 线程创建
self.thread_handle = threading.Thread(target=LoginDlg.thread_function,args=(self,self.combo.currentIndex()))
self.thread_handle.start()
return
def gouwubuy(self):
browser.get("https://cart.taobao.com/cart.htm")
# 点击购物车里全选按钮
buyt = self.dateTimeEdit.text()
buyti = re.findall(" (.*)",buyt)
buytime = buyti[0]+":00.000000"
while True:
now = datetime.datetime.now().strftime('%H:%M:%S.%f')
# 对比时间,时间到的话就点击结算
if now > buytime:
# 点击结算按钮
try:
if browser.find_element_by_id("J_Go"):
browser.find_element_by_id("J_Go").click()
except:
pass
try:
if browser.find_element_by_link_text('提交订单'):
browser.find_element_by_link_text('提交订单').click()
now1 = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
self.lbl.setText("提交订单时间为:%s"% now1)
except:
pass
def buy(self):
browser.get(self.lineEdit.text())
while True:
try:
if browser.find_element_by_link_text('立即购买'):
browser.find_element_by_link_text('立即购买').click()
except:
pass
try:
if browser.find_element_by_link_text('提交订单'):
browser.find_element_by_link_text('提交订单').click()
now1 = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
self.lbl.setText("提交订单时间为:%s" % now1)
break
except:
pass
def quanbuy(self):
browser.get(self.lineEdit.text())
while True:
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
# 对比时间,时间到的话就点击结算
try:
if browser.find_element_by_link_text('立刻抢'):
browser.find_element_by_link_text('立刻抢').click()
except:
pass
try:
if browser.find_element_by_link_text('点击领券'):
browser.find_element_by_link_text('点击领券').click()
except:
pass
def cpuid(self):
w = wmi.WMI()
cpus = w.Win32_Processor()
for u in cpus:
self.cpuid1 = u.ProcessorId
self.lineEdit2.setText(self.cpuid1)
def login():
# 打开淘宝登录页,并进行扫码登录
browser.get("https://www.taobao.com")
time.sleep(3)
if browser.find_element_by_link_text("亲,请登录"):
browser.find_element_by_link_text("亲,请登录").click()
time.sleep(3)
if __name__ == '__main__':
browser = webdriver.Chrome()
browser.maximize_window()
login()
app = QApplication(sys.argv)
dlg = LoginDlg()
dlg.show()
dlg.exec_()
app.exit()
来源:https://blog.csdn.net/shuryuu/article/details/88049893
0
投稿
猜你喜欢
- Python 中的字典是Python中一个键值映射的数据结构,下面介绍一下如何优雅的操作字典.1.1 创建字典Python有两种方法可以创建
- 前言:opencv最主要的的功能是用于图像处理,所以图像的概念贯穿了整个opencv,与其相关的核心类就是Mat。像素:图片尺寸以像素为单位
- PS笔刷,样式,形状、渐变、滤镜载入方式及使用:1、笔刷载入方式: 打开PS,编辑-->预设管理器-->载入-->然后点你
- 这个问题困扰了我很长很长的时间,在跨域获取数据的时候就要用到服务器端的对象,以前一直用的是Msxml.XMLHTTP。但是问题太多了,特别严
- Django cors跨域问题前后端分离项目中的跨域问题 即同源策略同源策略:同源策略/SOP(Same origin policy)是一种
- 用程序来求积分的方法有很多,这篇文章主要是有关牛顿-科特斯公式。学过插值算法的同学最容易想到的就是用插值函数代替被积分函数来求积分,但实际上
- 本文实例为大家分享了python实现维吉尼亚加密法的具体代码,供大家参考,具体内容如下Vigenere加密/解密时,把英文字母映射为0-25
- “输入框( Input )应当符合逻辑地划分为小组,这样大脑就可以很好的处理大堆区域间的关系。”– 《HTML权威指南》Web 应用程序总是
- QQ通过返回不同的图片,来表示在线或离线,图标也随之变换,既然图片不同,那么,返回的HTTP头信息中的Content-Length 也一定不
- 将视图与缓存系统进行了耦合,从几个方面来说并不理想。 例如,你可能想在某个无缓存的站点中重用该视图函数,或者你可能想将该视图发布给那些不想通
- 有感于中国互联网设计界十几年的变化,从网页设计师变身界面设计师,和近一两年来兴起的转型交互设计师。大多数都是随着一个行业的兴起而前赴后继的投
- Array.prototype中定义了很多操作数组的方法,下面介绍ECMAScript3中的一些方法1.Array.join()方法该方法将
- 0 引言上周被一则新闻震惊到了,《2454万元大奖无人认领!福彩史上第二大弃奖在广东中山产生 》,在2019年5月2日开奖的双色球中,广东中
- asp之家注:asp中FSO组件的功能很强大,如果没有FSO很难想象ASP会变成什么样。对于学习asp编程的朋友一定会接触到FSO相关的操作
- PDOStatement::debugDumpParamsPDOStatement::debugDumpParams — 打印一条 SQL
- 前因后果公司有人阳了,今天在家上班,突然小姨子就问我有没有baidu文库会员,想下载点东西,我心想这还要会员?用Python不是分分钟的事情
- 本文实例讲述了php利用cookies实现购物车的方法。分享给大家供大家参考。具体分析如下:php购物车是在电子商务网站会用到的,一种像超市
- PHP异步调用实现方式 浏览器和服务器之间只一种面向无连接的HTTP协议进行通讯的,面向无连接的程序的特点是客户端请求服务端,服务端根据请求
- httpwatch 的页面元素加载时间表里面有一堆的英文,平时也没注意看,今天瞟了一眼,觉得应该有些用处,就看了看,随便用蹩脚的英语水平翻译
- PHP使用星号替代用户名手机和邮箱这个在许多的活动界面会看到如淘宝的购物界面中的一些客户的支付宝号都是隐藏掉的哦,下面我们来看一下它的使用方