工作中,如何用python和selenium提取验证码呢?
获取验证码的方法
按照以往的经验,有4种方法:
让开发帮忙去掉验证码代码,重新部署环境
弄个万能验证码,每次登陆都可以登陆
用cookie添加登录名和密码避开验证码的方式
老老实实获取验证码图片,识别出验证码
方法一:
遇到好说话的开发,他一般都能帮忙去掉验证码的代码。
但是代码去掉了,还需要重新部署一套没验证码的环境,麻烦,不推荐。
方法二:
还是需要开发的帮助,弄一个万能验证码,但测试环境弄的万能验证码可千万不能搞到正式环境。
故不推荐,还是先想想别的办法。
通过短信获取:可以通过手机号码向指定的号码发送短信,获取验证码。通过邮件获取:可以通过邮箱地址向指定的邮箱发送邮件,获取验证码。通过图片获取:可以通过网站上的图片,输入图片中的文字,获取验证码。验证码CAPTCHA是一种区。
方法三:
该方法的难点是:如何在cookie中找到登陆用户名和密码的name,再将用户名和密码添加进去。
1、打开手机,在手机桌面上点击“信息”。2、进入信息后,点击“所有信息”这一项。3、现在就可以查看自己手机所有验证码,在里面可以找到需要的验证码即可。验证码的作用 防止恶意破解密码、刷票、论坛灌水、刷页。有效防止某。
方法四:
最容易想到的办法,重点讲这个方法,此处有2个思路。
截图登陆页面,再截取验证码图片,识别;
直接在登陆页面,定位到验证码,将验证码图片另存为,识别;
该方法实现过程中,用到第三方库pytesseract,所以先安装需要引用的库。
pytesseract的安装
pytesseract依赖于tesseract,需要先安装tesseract。
安装Tesseract模块:
git文档地址:
请安装不带dev的稳定版,下载后就是一个exe安装包,直接右击安装即可。
一般安装在默认路径,如果不在默认路径,请记住该路径。
下载培训数据:
需要下载相应的培训数据,直接下载整个zip文件,解压后将文件复制到’tessdata‘目录中。
一般为:C:\Program Files (x86)\Tesseract-OCR\tessdata
配置环境变量:
一键获取验证码,添加TESSDATA_PREFIX变量,值为:C:\Program Files (x86)\Tesseract-OCR\tessdata
最后,在cmd命令模式下测试是否安装成功:
tesseract test.jpg text -l chi_sim
安装python的第三方库:
pip install pillow #一个python的图像处理库,pytesseract依赖
pip install pytesseract
修改pytesseract.py文件:
修改内容如下:
代码实现
上面讲述了实现的2种思路,现在分别说明代码实现过程。
思路一:
先计算浏览器与登陆页面截图的比例值
再计算对应的验证码图片位置
再将获取到的验证码图片,先进行二值化处理
处理后的图像采用pytesseract库转化
截图保存验证码
二值化处理验证码图片
验证码图片转化
上述图片转化过程中,注意参数设置。
不设置参数时,总是将1转化为7,设置后转化准确率杠杠滴。
1、首先找到手机中的短信功能,然后点击打开短信。2、打开页面后,下拉页面,找到验证码,然后点击打开验证码。3、打开验证码页面后,即可看到手机中收到的验证码信息。4、如果不需要,用手指长按验证码信息,在弹出来的窗口。
当然,目前只是识别数字型的验证码,文字类型的方法应该是类似的。
思路二:
先定位到验证码的位置
将验证码图片另存到一个路径
该路径下获取最新的验证码图片
比如这个页面,需要填写我们的手机验证码才能登录。我们点击验证码下方的“获取验证码”,确认手机号页面,点击下方的“确定”,注意上方马上出现我们的短信验证码,点击下方的“复制验证码”!然后点击你填验证码的地方,注意最。
验证码图片二值化处理
处理后的图像采用pytesseract库转化
验证码另存为图片
后面的图片处理和获取验证码过程与思路一相同。