由于打包后软件过大,所以我就只实现了一下功能,打算用c#重新写一遍并且完善功能
界面模块
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setWindowModality(QtCore.Qt.WindowModal)
MainWindow.setEnabled(True)
MainWindow.resize(614, 718)
font = QtGui.QFont()
font.setBold(False)
font.setWeight(50)
MainWindow.setFont(font)
MainWindow.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
MainWindow.setAnimated(False)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.login = QtWidgets.QPushButton(self.centralwidget)
self.login.setGeometry(QtCore.QRect(0, 0, 71, 51))
font = QtGui.QFont()
font.setPointSize(11)
self.login.setFont(font)
self.login.setObjectName("login")
self.bag = QtWidgets.QPushButton(self.centralwidget)
self.bag.setGeometry(QtCore.QRect(80, 0, 71, 51))
font = QtGui.QFont()
font.setPointSize(11)
self.bag.setFont(font)
self.bag.setObjectName("bag")
self.shop = QtWidgets.QPushButton(self.centralwidget)
self.shop.setEnabled(True)
self.shop.setGeometry(QtCore.QRect(240, 0, 71, 51))
font = QtGui.QFont()
font.setPointSize(11)
self.shop.setFont(font)
self.shop.setObjectName("shop")
self.all_car = QtWidgets.QPushButton(self.centralwidget)
self.all_car.setGeometry(QtCore.QRect(160, 0, 71, 51))
font = QtGui.QFont()
font.setPointSize(11)
self.all_car.setFont(font)
self.all_car.setObjectName("all_car")
self.set = QtWidgets.QPushButton(self.centralwidget)
self.set.setGeometry(QtCore.QRect(320, 0, 71, 51))
font = QtGui.QFont()
font.setPointSize(11)
self.set.setFont(font)
self.set.setObjectName("set")
self.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setGeometry(QtCore.QRect(0, 550, 611, 171))
self.frame.setCursor(QtGui.QCursor(QtCore.Qt.IBeamCursor))
self.frame.setMouseTracking(False)
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Sunken)
self.frame.setLineWidth(4)
self.frame.setMidLineWidth(4)
self.frame.setObjectName("frame")
self.shuchu = QtWidgets.QTextEdit(self.frame)
self.shuchu.setGeometry(QtCore.QRect(0, 0, 611, 161))
self.shuchu.setReadOnly(True)
self.shuchu.setObjectName("plainTextEdit")
self.frame_2 = QtWidgets.QFrame(self.centralwidget)
self.frame_2.setGeometry(QtCore.QRect(10, 70, 351, 241))
self.frame_2.setAutoFillBackground(False)
self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_2.setFrameShadow(QtWidgets.QFrame.Sunken)
self.frame_2.setLineWidth(0)
self.frame_2.setObjectName("frame_2")
self.nicheng = QtWidgets.QLabel(self.frame_2)
self.nicheng.setGeometry(QtCore.QRect(10, 10, 161, 16))
self.nicheng.setTextFormat(QtCore.Qt.PlainText)
self.nicheng.setObjectName("nicheng")
self.jingyan = QtWidgets.QLabel(self.frame_2)
self.jingyan.setGeometry(QtCore.QRect(10, 110, 171, 20))
self.jingyan.setObjectName("jingyan")
self.dengji = QtWidgets.QLabel(self.frame_2)
self.dengji.setGeometry(QtCore.QRect(10, 60, 151, 16))
self.dengji.setObjectName("dengji")
self.cheliangshu = QtWidgets.QLabel(self.frame_2)
self.cheliangshu.setGeometry(QtCore.QRect(10, 170, 141, 16))
self.cheliangshu.setObjectName("cheliangshu")
self.zichan = QtWidgets.QLabel(self.frame_2)
self.zichan.setGeometry(QtCore.QRect(180, 10, 161, 16))
self.zichan.setObjectName("zichan")
self.progressBar = QtWidgets.QProgressBar(self.frame_2)
self.progressBar.setGeometry(QtCore.QRect(10, 132, 131, 31))
self.progressBar.setStyleSheet("*{border:1px solid rgb(0, 0, 0);background-color:rgb(207, 247, 255);}")
self.progressBar.setProperty("value", 0)
self.progressBar.setTextVisible(False)
self.progressBar.setObjectName("progressBar")
self.frame_3 = QtWidgets.QFrame(self.centralwidget)
self.frame_3.setGeometry(QtCore.QRect(370, 70, 241, 241))
self.frame_3.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_3.setFrameShadow(QtWidgets.QFrame.Sunken)
self.frame_3.setLineWidth(3)
self.frame_3.setObjectName("frame_3")
self.park = QtWidgets.QPushButton(self.frame_3)
self.park.setGeometry(QtCore.QRect(10, 10, 71, 51))
self.park.setObjectName("park")
self.frame_4 = QtWidgets.QFrame(self.centralwidget)
self.frame_4.setGeometry(QtCore.QRect(0, 330, 611, 211))
self.frame_4.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_4.setFrameShadow(QtWidgets.QFrame.Sunken)
self.frame_4.setLineWidth(2)
self.frame_4.setObjectName("frame_4")
self.line = QtWidgets.QFrame(self.centralwidget)
self.line.setGeometry(QtCore.QRect(-10, 50, 621, 20))
self.line.setFrameShape(QtWidgets.QFrame.HLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "QQ抢车位—BUG反馈1328649047"))
self.login.setText(_translate("MainWindow", "登录"))
self.bag.setText(_translate("MainWindow", "背包"))
self.shop.setText(_translate("MainWindow", "商店"))
self.all_car.setText(_translate("MainWindow", "车库"))
self.set.setText(_translate("MainWindow", "设置"))
self.nicheng.setText(_translate("MainWindow", "昵称:"))
self.jingyan.setText(_translate("MainWindow", "经验:"))
self.dengji.setText(_translate("MainWindow", "等级:"))
self.cheliangshu.setText(_translate("MainWindow", "车辆数:"))
self.zichan.setText(_translate("MainWindow", "资产:"))
self.park.setText(_translate("MainWindow", "一键停车"))
# if __name__ == '__main__':
# app = QtWidgets.QApplication(sys.argv)
# MainWindow = QtWidgets.QMainWindow()
# ui = Ui_MainWindow()
#
# ui.setupUi(MainWindow)
# MainWindow.show()
# sys.exit(app.exec_())
界面配置和功能模块
import sys,requests,random,time
import qqqiangchewei
from PyQt5 import QtCore, QtWidgets
from threading import Thread
from PyQt5.QtWebEngineWidgets import QWebEngineView,QWebEngineProfile
class Main_app(QtWidgets.QMainWindow,qqqiangchewei.Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.log('软件开始运行———请先登录')
self.web = MyWebEngineView() # 创建浏览器组件对象
self.web.setFixedSize(300, 300) # 设置大小
self.web.setWindowTitle('请登录')
QtWidgets.QVBoxLayout(self).addWidget(self.web) # 再放浏览器
def bangding(self):
self.login.clicked.connect(self.show_web)
self.park.clicked.connect(self.P_pack)
#打开登录界面
def show_web(self):
self.web.close()
self.web.load(QtCore.QUrl(
"https://xui.ptlogin2.qq.com/cgi-bin/xlogin?&appid=549000912&s_url=http%3A%2F%2Fgameapp.qq.com%2F347")) # 打开网页
# self.setWindowModality(Qt.ApplicationModal)
if 'ts' not in self.web.cookies.keys():
self.web.show()
else:
a = QtWidgets.QMessageBox.question(self, "", "你已登录是否需要退出登录",
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No,
QtWidgets.QMessageBox.No)
if a == QtWidgets.QMessageBox.Yes:
self.web = MyWebEngineView()
self.web.setFixedSize(300, 300)
self.login.setText('登录')
del globals()['main_cookies'] #清除全局变量
def P_pack(self):
if 'tx_openid' in self.web.cookies.keys():
self.P=parking()
t = Thread(target=self.P.park)
t.setDaemon(True)
t.start()
else:
QtWidgets.QMessageBox.question(self,'','登录')
def log(self,msg):
self.shuchu.moveCursor(self.shuchu.textCursor().Start)
self.shuchu.insertPlainText(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())+' '+ msg+'\n')
class MyWebEngineView(QWebEngineView):
def __init__(self, *args, **kwargs):
super(MyWebEngineView, self).__init__(*args, **kwargs)
# 绑定cookie被添加的信号槽
QWebEngineProfile.defaultProfile().cookieStore().cookieAdded.connect(self.onCookieAdd)
self.cookies = {} # 存放cookie字典
self.login_state=False
def onCookieAdd(self, cookie): # 处理cookie添加的事件
name = cookie.name().data().decode('utf-8') # 先获取cookie的名字,再把编码处理一下
value = cookie.value().data().decode('utf-8') # 先获取cookie值,再把编码处理一下
self.cookies[name] = value # 将cookie保存到零时字典里
if 'ts' in self.cookies.keys () and not self.login_state:
APP.login.setText('已登录')
self.login_state=True
global main_cookies
main_cookies = self.cookies
self.close()
APP.log('你已成功登录')
#登录抢车位类
class parking(object):
def __init__(self):
self.headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36' ,
'Cookie' : 'rk_uid='+main_cookies.get('rk_uid')+';tx_openid='+main_cookies.get('tx_openid')+';tx_pfkey='+main_cookies.get('tx_pfkey')+ ';ts='+main_cookies.get('ts')+ ';rkauth_token='+main_cookies.get('rkauth_token')+ ';tx_openkey='+main_cookies.get('tx_openkey')
}
self.url_api = 'http://app347.qzone.qzoneapp.com/api/?client_token=' + main_cookies.get('ts')
# 循环随机停车
def park(self):
# 获取好友
friends = requests.get(url=self.url_api + '&method=friend.show',headers=self.headers).json()['data']['friend'].keys()
id = 1
while id <= 10:
f = random.choice(list(friends))
place = random.randint(2, 4)
msg = requests.get(url=self.url_api + '&place=' + str(place) + '&method=park.placing&uid=' + f + '&garage_id=' + str(id),headers=self.headers).json()
print(msg)
if 'mc' in msg.keys():
if msg['mc'] == 0: # 如果已经停好则跳过
APP.log('car' + str(id) + '停车成功')
id += 1
elif msg['mc'] == 2003:
APP.log('car' + str(id) + '停车未满15分钟')
id += 1
elif msg['mc']==1038:
APP.log('操作频繁,停止')
break
# 活动 类
class parking_acticity(object):
def __init__(self, parking):
self.act_url = parking.url_api + '&method=activity.run&'
# 爱心活动
def aixin(self):
# 点亮爱心
for i in range(1, 4):
requests.get(url=self.act_url + 'act_name=badge&act_method=req&index=' + str(i),headers=parking.headers)
# 领取爱心
requests.get(url=self.act_url + 'act_name=badge&act_method=req_awd',headers=parking.headers)
# 送爱心
pass
# 寻宝活动
def xunbao(self):
requests.get(url=self.act_url + 'act_name=treasure_hunt&act_method=lottery',headers=parking.headers)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
APP = Main_app()
APP.bangding()
APP.show()
sys.exit(app.exec_())
截图
登录完成后会自动获取cookies 并且关闭登录窗口
点击停车后会向对应网址发送get请求,实现自动停车