Python-处理登录验证码

我是研究僧i 提交于 2019-12-05 00:09:15

一、前提:

安装selenium

安装chromedriver

pillow模块安装(处理图像的库)

 

二、下载“超级鹰”对外API

超级鹰是验证码识别平台,1块钱可以识别100次,直接百度超级鹰进入官网即可

点击开发文档,点击python,点击“点击这里下载”,下载API压缩包

 

 

 解压后如下图所示,将chaojiying.py用pycharm打开

 

 

 

如果是python3,这里需要改一下,print 后边加()

 

 

 

用户名和密码需要注册超级鹰,软件id在用户中心-->软件id可以生成,然后就可以自行测试一下啦

 

三、实例

下面是我自己实现的登录界面验证码处理,仅供参考

 

from selenium import webdriverfrom chaojiying import Chaojiyingfrom PIL import Imagefrom scripts.constants import PAGE_PATH,YZM_PATHdirver = webdriver.Chrome()# 第一步:访问登录页面dirver.get(网址)# 第二步:定位用户名密码输入框,输入账号和密码# 第三步:验证码识别# 保存浏览器当前页面dirver.save_screenshot(“page.png”)# 从页面中截取验证码vcode = dirver.find_element_by_xpath(验证码的定位表达式)# 1、获取验证码上下左右边界坐标loc = vcode.location    # location获取的是xy轴坐标size = vcode.sizeleft = loc['x']top = loc['y']right = (loc['x'] +size['width'])button = (loc['y']+size['height'])# 截取页面中的验证码page_pic = Image.open(”page.png“)# 进行截图:参数时一个元组(left,top,right,button)v_code_pic = page_pic.crop((left,top,right,button))     # v_code_pic就是验证码v_code_pic.save(”yzm.png“)      # 保存验证码# 使用超级鹰识别验证码中的内容yz = Chaojiying(username='18301603634', password='mydestiny', soft_id='902340')with open(“yzm.png”, 'rb')as f:    pic = f.read()# 得到验证码识别的结果result = yz.post_pic(pic, codetype=1902)  # 得到的结果中,pic_str就是识别后的验证码res = result['pic_str']print(res)# 第四步:定位验证码输入框,输入验证码# 第五步:点击登录# 如果验证码识别失败,可查看result字典中的err_str报错信息
至此,就可以登录带有验证码的系统啦,需要注意的是,超级鹰需要购买哦,不够购买会识别失败*******请大家尊重原创,如要转载,请注明出处:转载自:https://www.cnblogs.com/urbbr,谢谢!!******* 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!