前面咱們作了一個xsrf的知乎的模擬登陸,那麼今天將會給你們分享一下小弟寫的一段帶驗證碼的登陸腳本。html
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()
嗯哼,此次的分享就到這裏,有興趣的朋友能夠本身多多練習。