某卡验证码获取识别登录
共 1389字,需浏览 3分钟
·
2021-08-10 15:33
前言
前短时间夜幕团队的哲哥带来一个强大的库,一个验证码识别库 ddddocr,小编第一时间看到后就收藏了,最近有空就找了一个例子来试试。
这次是某卡网站的登录,在试验这个库时,顺便教大家验证码怎么获取,因为有一种验证码定位到验证码链接后,去请求链接下载,再去识别下载后的本地图片,即使识别的结果与下载的一样,但就是不能登录。
其次 ddddocr 这个库比较适用如下的这种验证码识别,小编与某度的 OCR 对比,效果好太多了:
验证码获取
打开登录网页,这个登录页面初始页面显示的是动态手机密码登录,且是没验证码的,我们需要使用账号密码登录,及验证码出现流程如下:
1.点击手机密码登录
2.输入账号,密码
3.点击登录,这时验证码才会弹出
4.识别填写验证码
5.再次点击登录,完成整个流程
现在我们就来解刨这个流程,打开开发者工具定位到验证码元素,可看到对应的链接:
从上图看出,链接显示的验证码码与输入框那里的验证码一致。
好,到这里一般是直接请求这个链接,把验证码下载到本地,进行识别,在把验证码提交上去,登录,这思路没有错,一个链接对应一个验证码,有很多网站就这样的。
但有一些网站,这样做是不行的,一个链接对应多个验证码,我们打开链接,进行对比,会发现,链接一样,打开的验证码与输入框显示的不一样:
前端显示的是 bcdz,而链接打开后显示却是 FYUW,两个不一样的结果,拿 FYUW 输入框中,是可以登陆成功的,这里就不放成功跳转的截图了,不信的话可试试:
现在来解释一下为什么,学过计算机网络的话,理解应该方便点,就是一个握手协议,。
打开浏览器,打开登录网页,pc 端会携带一个 cookie 给对方,相当于握上手了,连接上了。
cookie 作为此次请求这个网站的标识,当点击登录验证码弹出时,这个验证码也是通过这个握手连接对应此次登录需要的验证码。
尽管显示的不一样,但都是在此次握手的通道中,所以可以用不一样的验证码输入进去登录上。
如果得到验证码链接,直接使用 requests 去请求下载验证码,相当于重新打开一个浏览器去访问,重新建立了一个握手通道,所以识别出来的码不能使用。
获取思路
思路也是比较简单的,可以使用 selenium 进行操作,提交账号密码都是常规操作。
主要的是验证码,先获取验证码链接,再在同一个浏览器中打开一个新窗口,在新窗口中打开验证码链接,这样就保证了验证码与此次登录页面在同一个通道中。
然后使用 pyautogui 库自动右键保存图片,操作部分代码:
保存下来图片后,就可以使用强大的 ddddocr 进行识别了,小编使用的体验挺不错,简介方便,准确度高,;某度的 OCR 调用又麻烦,识别准确度巨低。
一个效果视频如下,完整代码回复关键词获取。
源码获取
在公众号对话框回复关键字“卡卡”即可获取
END
读者交流群已建立,找到我备注 “交流”,即可获得加入我们~
听说点 “在看” 的都变得更好看呐~
关注关注小编呗~小编给你分享爬虫,数据分析,可视化的内容噢~
扫一扫下方二维码即可关注我噢~
-END-