利用selenium+打码工具实现自动识别验证码并登录
哈喽,在这个寂寞的下午,看到同样寂寞的这篇无聊的文章,赏个脸,虽然很low,但别喷。
因为太丑,在这个既不能上班又没有女朋友陪伴的寂寞日子了,看看电子书,发现居然要登录,登录就登录吧,还有验证码,只好解决乎~
第一步:用户名和密码:
得到这个需要登录的url,然后利用selenium的webdriver打开浏览器,并输入信息(为什么用selenium?因为这篇文章写的就是用selenium。selenium太慢?确实很慢)
这样,用户名和密码就都输入完了。接下来,是验证码
第二步:验证码
在验证码这里,首先我们要确保这个验证码是最新的,然后识别它。那么如何确保最新,有的网站是直接点击验证码刷新,有的网站会有‘看不清,点击刷新’,类似的字样,总之确保最新就可以了。这里对图片进行点击
接下来,使用要识别验证码,就要对图片进行保存,这里用到的是selenium的对元素截图
最后,是对验证码进行识别。这里没有使用二值化、灰度等技术,笔者发现,写了半天的技术,好像不行。于是乎,找了个打码平台,解决验证码识别,何必重复造*呢,是吧(明明是自己太懒,抠鼻~)
在这里选择了斐斐打码 http://www.fateadm.com/
查看它的开发文档下载python3的demo
然后,在demo里有个TestFunc()方法,将其修改,传入自己的pd_id、pd_key、app_id、app_key以及图片的位置和需要识别的验证码类型
最后,返回验证的结果
回到刚刚的代码,我们利用TestFunc()识别出验证码之后,就可以将验证码输入,点击登录
第三步:判断是否验证成功
这里加一步,判断是否验证成功。首先使用current_url获取当前页面的url,然后对比登录页面的url,如果相等则重新
来一遍登录。所以用到了while语句
最后,把源代码截图给大家,代码一定要自己打一遍