前面咱们作了一个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()
嗯哼,此次的分享就到这里,有兴趣的朋友能够本身多多练习。