selenium:python如何绕过登录页面登录网页

selenium:python如何绕过登录页面登录网页,第1张

NETDEV_Init 初始化

NETDEV_Login_V30 ipc设备登录

NETDEV_QueryVideoChlDetailList 查询视频通道信息列表

NETDEV_CaptureNoPreview 设备抓图

使用restype 设置接收参数的类型

HIKSDKNETDEV_Login_V30restype = ctypesc_void_p

假如不设置接收参数的类型,会抛出异常:内存地址不一致

指针类型作为返回值传递给python时,在未设置类型的时候,会发生默认截断的问题

sdk日志:

python日志:101200(用户不在线)

https://docspythonorg/36/library/ctypeshtml#fundamental-data-types

http://icejoywoogithubio/2018/12/10/intro-python-ctypshtml

本例,展示了通过登录界面打开主界面的实现方式。

在开始实现登录界面前,先给大家普及一下PyQt5的安装以及使用

pip install PyQt5

pip35 install pyqt5-tools

1在win+R中输入designer并敲回车,即可启动Designer。一般选择“Main Window”点击“Create”即可创建。

若在win+R中输入designer并敲回车后无反应,可以直接搜designerexe直接启动

2创建后,可以方便快捷的用Qt Designer画出对应框体,如通过Combo Box添加下拉选择的控件;通过Push Button添加按钮;通过List Widget添加列表框;通过Table Widget添加数据表格框,table中设置列数(右键-Edit Items-Colums),调整框体位置和文字大小,背景颜色以及windowTitle来优化界面显示,使用快捷键Ctrl+R预览当前编写的GUI显示如下:

3点击保存,生成ui的文件,本例中为testui,保存在D:\py\deploy文件夹下

使用场景

在面对需要账号密码登录的网页时,可以通过定位输入框,使用send_keys

输入账号密码登录。

但是在面对某些无法通过页面直接登录的场景,比如需要微信或者软件扫码、验证码等才能进入页面的情况时,就可以通过cookie进行登录。

本文主要介绍通过记录上一次登录网页的cookie,在cookie生效期间直接绕过登录页面直接进入系统的登录方式。

登录页面后获取登录的cookie

读取之前存入的cookie

这样只要记录的cookie生效,那么就可以不用每次进入系统时都需要在登录页面登录啦~

python编写一个脚本的具体操作:

1、首先,打开python并创建一个新的PY文件。

2、其次,import os,因为涉及系统文件的路径,因此首先在此处导入系统模块。

3、随后,可以双击打开HTML文件,然后就可以看到书写的网页,如下图所示。

4、最后,添加htmlclose(),需添加此行代码以关闭,否则将占用大量内存,如下图所示。这样,用python简单的制作一个网页的所有操作就完成了。完成。

大致的思路是先抓包,分析登陆包以及服务器返回的数据包的内容,然后用Python写。可以使用urllib2,cookiejar,beautifulsoup(这个用来分析网页,当然,自己用正则构造一个类效率会更高)这几个类。

import tkinter as tk

import mysqlconnector

# 创建MySQL数据库连接

mydb = mysqlconnectorconnect(

host="localhost",

user="root",

passwd="password",

database="mydatabase"

)

# 创建用户表

mycursor = mydbcursor()

mycursorexecute("CREATE TABLE IF NOT EXISTS users (username VARCHAR(255), password VARCHAR(255))")

def login():

username = username_entryget()

password = password_entryget()

# 查询数据库中是否存在该用户

mycursorexecute("SELECT FROM users WHERE username = %s AND password = %s", (username, password))

result = mycursorfetchall()

if result:

status_labelconfig(text="Login successful")

else:

status_labelconfig(text="Invalid username or password")

def register():

username = username_entryget()

password = password_entryget()

# 查询数据库中是否存在相同用户名的用户

mycursorexecute("SELECT FROM users WHERE username = %s", (username,))

result = mycursorfetchall()

if result:

status_labelconfig(text="Username already exists")

else:

# 向数据库中插入新用户

mycursorexecute("INSERT INTO users (username, password) VALUES (%s, %s)", (username, password))

mydbcommit()

status_labelconfig(text="Registration successful")

def change_password():

username = username_entryget()

old_password = old_password_entryget()

new_password = new_password_entryget()

# 查询数据库中是否存在该用户以及旧密码是否正确

mycursorexecute("SELECT FROM users WHERE username = %s AND password = %s", (username, old_password))

result = mycursorfetchall()

if result:

# 更新数据库中的密码

mycursorexecute("UPDATE users SET password = %s WHERE username = %s", (new_password, username))

mydbcommit()

status_labelconfig(text="Password changed successfully")

else:

status_labelconfig(text="Invalid username or password")

# 创建主窗口

root = tkTk()

roottitle("Login System")

# 创建登录界面

login_frame = tkFrame(root)

login_framepack(pady=20)

username_label = tkLabel(login_frame, text="Username:")

username_labelgrid(row=0, column=0, padx=10, pady=10)

username_entry = tkEntry(login_frame)

username_entrygrid(row=0, column=1, padx=10, pady=10)

password_label = tkLabel(login_frame, text="Password:")

password_labelgrid(row=1, column=0, padx=10, pady=10)

password_entry = tkEntry(login_frame, show="")

password_entrygrid(row=1, column=1, padx=10, pady=10)

login_button = tkButton(login_frame, text="Login", command=login)

login_buttongrid(row=2, column=0, padx=10, pady=10)

register_button = tkButton(login_frame, text="Register", command=register)

register_buttongrid(row=2, column=1, padx=10, pady=10)

# 创建修改密码界面

change_password_frame = tkFrame(root)

change_password_framepack(pady=20)

old_password_label = tkLabel(change_password_frame, text="Old Password:")

old_password_labelgrid(row=0, column=0, padx=10, pady=10)

old_password_entry = tkEntry(change_password_frame, show="")

old_password_entrygrid(row=0, column=1, padx=10, pady=10)

new_password_label = tkLabel(change_password_frame, text="New Password:")

new_password_labelgrid(row=1, column=0, padx=10, pady=10)

new_password_entry = tkEntry(change_password_frame, show="")

new_passwordgrid(row=1, column=1, padx=10, pady=10)

change_password_button = tkButton(change_password_frame, text="Change Password", command=change_password)

change_password_buttongrid(row=2, column=0, padx=10, pady=10)

# 创建状态标签

status_label = tkLabel(root, text="")

status_labelpack(pady=10)

rootmainloop()

上述代码中的MySQL连接信息(host, user, passwd, database)需要根据实际情况进行修改

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » selenium:python如何绕过登录页面登录网页

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情