某卡验证码获取识别登录
Posted 程序员大咖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了某卡验证码获取识别登录相关的知识,希望对你有一定的参考价值。
????????关注后回复 “进群” ,拉你进程序员交流群????????
作者丨木下瞳
来源丨木下学Python
前言
前短时间夜幕团队的哲哥带来一个强大的库,一个验证码识别库 ddddocr,小编第一时间看到后就收藏了,最近有空就找了一个例子来试试。
这次是某卡网站的登录,在试验这个库时,顺便教大家验证码怎么获取,因为有一种验证码定位到验证码链接后,去请求链接下载,再去识别下载后的本地图片,即使识别的结果与下载的一样,但就是不能登录。
其次 ddddocr 这个库比较适用如下的这种验证码识别,小编与某度的 OCR 对比,效果好太多了:
验证码获取
打开登录网页,这个登录页面初始页面显示的是动态手机密码登录,且是没验证码的,我们需要使用账号密码登录,及验证码出现流程如下:
1.点击手机密码登录
2.输入账号,密码
3.点击登录,这时验证码才会弹出
4.识别填写验证码
5.再次点击登录,完成整个流程
现在我们就来解刨这个流程,打开开发者工具定位到验证码元素,可看到对应的链接:
从上图看出,链接显示的验证码码与输入框那里的验证码一致。
好,到这里一般是直接请求这个链接,把验证码下载到本地,进行识别,在把验证码提交上去,登录,这思路没有错,一个链接对应一个验证码,有很多网站就这样的。
但有一些网站,这样做是不行的,一个链接对应多个验证码,我们打开链接,进行对比,会发现,链接一样,打开的验证码与输入框显示的不一样:
前端显示的是 bcdz,而链接打开后显示却是 FYUW,两个不一样的结果,拿 FYUW 输入框中,是可以登陆成功的,这里就不放成功跳转的截图了,不信的话可试试:
现在来解释一下为什么,学过计算机网络的话,理解应该方便点,就是一个握手协议,。
打开浏览器,打开登录网页,pc 端会携带一个 cookie 给对方,相当于握上手了,连接上了。
cookie 作为此次请求这个网站的标识,当点击登录验证码弹出时,这个验证码也是通过这个握手连接对应此次登录需要的验证码。
尽管显示的不一样,但都是在此次握手的通道中,所以可以用不一样的验证码输入进去登录上。
如果得到验证码链接,直接使用 requests 去请求下载验证码,相当于重新打开一个浏览器去访问,重新建立了一个握手通道,所以识别出来的码不能使用。
获取思路
思路也是比较简单的,可以使用 selenium 进行操作,提交账号密码都是常规操作。
主要的是验证码,先获取验证码链接,再在同一个浏览器中打开一个新窗口,在新窗口中打开验证码链接,这样就保证了验证码与此次登录页面在同一个通道中。
然后使用 pyautogui 库自动右键保存图片,操作部分代码:
保存下来图片后,就可以使用强大的 ddddocr 进行识别了,小编使用的体验挺不错,简介方便,准确度高,;某度的 OCR 调用又麻烦,识别准确度巨低。
一个效果视频如下,完整代码回复关键词获取。
-End-
最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!
点击????卡片,关注后回复【面试题
】即可获取
在看点这里好文分享给更多人↓↓
以上是关于某卡验证码获取识别登录的主要内容,如果未能解决你的问题,请参考以下文章