验证码模拟登录TestHome
生活随笔
收集整理的這篇文章主要介紹了
验证码模拟登录TestHome
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前面我們做了一個xsrf的知乎的模擬登錄,那么今天將會給大家分享一下小弟寫的一段帶驗證碼的登錄腳本。
今天我們要做的是testerhome的模擬登錄,在做這個模擬登錄的時候,我發現需要驗證碼才能登錄。那么這里的自動登錄,我們首先要面對的問題就是驗證碼。 我在頁面元素中定位到了驗證碼圖片的服務器地址,想通過去服務器地址取驗證碼圖片,然后手動輸入驗證碼去實現模擬的自動登錄,然后,首先要解決的就是驗證碼的獲取,展示,以及關閉和。其實輸入這里不是什么大問題。這里這段代碼,我搞了兩天才搞出來。下面分享給大家。 importrequestsfromPILimportImage
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()
嗯哼,這次的分享就到這里,有興趣的朋友可以自己多多練習。
轉載于:https://www.cnblogs.com/rookie-c/p/5753401.html
總結
以上是生活随笔為你收集整理的验证码模拟登录TestHome的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实习笔记 —— AOP开发I
- 下一篇: ppt幻灯片如何直接转换成pdf电子书