驗證碼模擬登陸TestHome

前面咱們作了一個xsrf的知乎的模擬登陸,那麼今天將會給你們分享一下小弟寫的一段帶驗證碼的登陸腳本。html

 
今天咱們要作的是testerhome的模擬登陸,在作這個模擬登陸的時候,我發現須要驗證碼才能登陸。那麼這裏的自動登陸,咱們首先要面對的問題就是驗證碼。
我在頁面元素中定位到了驗證碼圖片的服務器地址,想經過去服務器地址取驗證碼圖片,而後手動輸入驗證碼去實現模擬的自動登陸,而後,首先要解決的就是驗證碼的獲取,展現,以及關閉和。其實輸入這裏不是什麼大問題。這裏這段代碼,我搞了兩天才搞出來。下面分享給你們。
importrequests
fromPILimportImage
importos
importtime
ssesion = requests.session()
headers = {
'Connection':'keep-alive',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language':'zh-CN,zh;q=0.8',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
'Accept-Encoding':'gzip, deflate, sdch',
'server':'nginx',
}
login_data = {'username':'',# 替換爲帳號
'password':'',# 替換爲密碼
'Referer':'https://testerhome.com/',
}
captchaurl ='https://testerhome.com/rucaptcha/'
url ='https://testerhome.com/account/sign_in'
r = ssesion.get(captchaurl,headers=headers)

defoncaptcha():

f =open('C:\\Users\\admin\\Desktop\\captcha.jpg','wb')
f.write(r.content)
cap = Image.open('C:\\Users\\admin\\Desktop\\captcha.jpg')
captch = Image._show(cap)
time.sleep(5)
captcha ='taskkill/f /IM dllhost.exe'
os.system(captcha)
Captcha =input('captcha:')
returncaptch,Captcha
oncaptcha()
這裏這段代碼筆者作的時候難點就是驗證碼的圖片的展現,以及定時的關閉。由於沒有接觸過這塊兒,因此也作了兩天的時間。
在這裏我只給你們解讀一下oncaptcha函數裏的代碼。上面的代碼實在是講過太屢次了,就不作解讀了。
第一部分,咱們將得到到的返回內容,以二進制的形式寫入到指定的地址和文件中
而後,經過Pillow(Python3.5)模塊的Image.show()方法,打開win的圖片查看器,展現驗證碼圖片
接着,我使用time模塊的time.sleep()方法設置了一個休眠期,休眠時間爲5s
而後我經過os模塊的os.system()方法去殺掉了win裏面的圖片查看器的進程,關閉了驗證碼
最後使用input()方法,輸入驗證碼
爲何我這裏使用os.system呢?由於我沒有找到其餘的關閉驗證碼圖片的方法!而後...我想了想,這個圖片驗證碼是調了win的服務進行展現,因此就利用os.system去殺掉它的進程進行關閉。
好了,最可貴部分已經解決了,那麼咱們來看看完整的模擬登陸的代碼:
importrequests
fromPILimportImage
importos
importtime
ssesion = requests.session()
headers = {
'Connection':'keep-alive',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language':'zh-CN,zh;q=0.8',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
'Accept-Encoding':'gzip, deflate, sdch',
'server':'nginx',
}
login_data = {'username':'',# 替換爲帳號
'password':'',# 替換爲密碼
'Referer':'https://testerhome.com/',
}
captchaurl ='https://testerhome.com/rucaptcha/'
url ='https://testerhome.com/account/sign_in'
r = ssesion.get(captchaurl,headers=headers)

defoncaptcha():

f =open('C:\\Users\\admin\\Desktop\\captcha.jpg','wb')
f.write(r.content)
cap = Image.open('C:\\Users\\admin\\Desktop\\captcha.jpg')
captch = Image._show(cap)
time.sleep(5)
captcha ='taskkill/f /IM dllhost.exe'
os.system(captcha)
returncaptch
deflogin():
oncaptcha()
Captcha =input('captcha:')
login_data['captcha']=Captcha
response = ssesion.get(url,headers= headers,data= login_data,)
print(response)
if__name__ =='__main__':
login()

嗯哼,此次的分享就到這裏,有興趣的朋友能夠本身多多練習。
相關文章
相關標籤/搜索