在开始实现登录界面前,先给大家普及一下PyQt5的安装以及使用
pip install PyQt5
pip3.5 install pyqt5-tools
1.在win+R中输入designer并敲回车,即可启动Designer。一般选择“Main Window”点击“Create”即可创建。
若在win+R中输入designer并敲回车后无反应,可以直接搜designer.exe直接启动
2.创建后,可以方便快捷的用Qt Designer画出对应框体,如通过Combo Box添加下拉选择的控件;通过Push Button添加按钮;通过List Widget添加列表框;通过Table Widget添加数据表格框,table中设置列数(右键-Edit Items-Colums),调整框体位置和文字大小,背景颜色以及windowTitle来优化界面显示,使用快捷键Ctrl+R预览当前编写的GUI显示如下:
3.点击保存,生成*.ui的文件,本例中为test.ui,保存在D:\py\deploy文件夹下
创建一个简单的登录窗口,假设用户名为TestName,密码为Python。
依据之前提到的创建方式,grid布局设计UI,设计登录用户名和密码检查函数。
from tkinterimport *
def LoginCheck():
name = txtName.get()
password = txtPassword.get()
name_len =len(name)
password_len =len(password)
if name =="TestName" and password =="Python":
msgLabel['text'] ='登录成功'
elif name =="TestName" and password !="Python":
msgLabel['text'] ='密码错误'
txtPassword.delete(0,password_len)
else:
msgLabel['text'] ='用户名错误'
txtName.delete(0,name_len)
txtPassword.delete(0, password_len)
wnd = Tk()
lblName = Label(wnd, text='User Name:')
lblName.grid(row=0, column=0, sticky=W)
txtName = Entry(wnd)
txtName.grid(row=0, column=1, sticky=E)
lblPs = Label(wnd, text='密码:')
lblPs.grid(row=1, column=0, sticky=W)
txtPassword = Entry(wnd)
txtPassword["show"] ='*'
txtPassword.grid(row=1, column=1, sticky=E)
btn = Button(wnd, text='登录', command=LoginCheck)
btn.grid(row=2, column=1, sticky=E)
# Message
msgLabel = Label(wnd, text='')
msgLabel.grid(row=3)
wnd.mainloop()
运行效果如下:
可输入不同的用户名和密码检测逻辑上设计是否正确。
用户名错误:
密码错误:
登录成功:
前言
有些登录不是用cookie来验证的,是用token参数来判断是否登录。
token传参有两种一种是放在请求头里,本质上是跟cookie是一样的,只是换个单词而已;另外一种是在url请求参数里,这种更直观。
一、登录返回token
1.如下图的这个登录,无cookies
2.但是登录成功后有返回token
二、请求头带token
1.登录成功后继续操作其它页面,发现post请求的请求头,都会带token参数
2.这种请求其实比cookie更简单,直接把登录后的token放到头部就行
三、token关联
1.用脚本实现登录,获取token参数,获取后传参到请求头就可以了
2.如果登录有验证码,前面的脚本登录步骤就省略了,自己手动登录后获取token
import requests
header = { # 登录抓包获取的头部
"User-Agent": "Mozilla/5.0 (Windows NT 10.0WOW64rv:44.0) Gecko/20100101 Firefox/44.0",
"Accept": " / ",
"Accept-Language": "zh-CN,zhq=0.8,en-USq=0.5,enq=0.3",
"Accept-Encoding": "gzip, deflate",
"Content-Type": "application/x-www-form-urlencodedcharset=UTF-8",
"X-Requested-With": "XMLHttpRequest",
"Content-Length": "423",
"Connection": "keep-alive"
}
body = {"key1": "value1",
"key2": "value2"} # 这里账号密码就是抓包的数据
s = requests.session()
login_url = " http://xxx.login " # 自己找带token网址
login_ret = s.post(login_url, headers=header, data=body)
token = login_ret.json()["token"]
post_url = " http://xxx "
header["token"] = token
header["Content-Length"]="9"
body1 = {
"key": "value"
}
post_ret = s.post(post_url, headers=header, data=body1)
print post_ret.content