某卡验证码获取识别登录

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 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

点击????卡片,关注后回复【面试题】即可获取

在看点这里好文分享给更多人↓↓

以上是关于某卡验证码获取识别登录的主要内容,如果未能解决你的问题,请参考以下文章

最新验证码识别模拟登陆B站

如何python爬虫识别验证码

通过内置浏览器和验证码识别登录网站

Selenium UI自动化验证码:识别+输入

最新selenium+验证码识别模拟登陆B站

Selenium&Pytesseract模拟登录+验证码识别