欢迎光临散文网 会员登陆 & 注册

搞定滑块和验证码

2022-03-28 15:09 作者:无情剑客Burning  | 我要投稿


Frida可视化工具Dwarf2[1]已经开源,大家有什么问题,可以一起交流。

本文内容仅用于学习,严禁用作非法目的。

验证码

作用

验证码作为一种人机识别手段,其终极目的,就是区分正常人和机器的操作。 区分人机行为的作用不言而喻。互联行为的注册、登录、发帖、领优惠券、投票等等应用场景,都有被机器刷造成各类损失的风险,如果不对各类机器垃圾的行为加以防范,灌水内容、垃圾注册、恶意登录、刷票、撞库、活动作弊、垃圾广告、爬虫、羊毛党等用户行为一旦发生,将对产品自身发展、用户体验造成极大的影响。

搞定验证码

很多网站都使用了验证码进行人机识别,给爬虫带来了一定的困扰。常见的验证码如下:

trwebocr

一个开源的ocr工具,非常强大。官方介绍是: 开源易用的中文离线OCR,识别率媲美大厂,并且提供了易用的web页面及web的接口,方便人类日常工作使用或者其他程序来调用~ 。笔者在github[2]上有关于它的使用。

通过一个例子来感受一下这个工具。以下是我2022虎年快乐这个公众号里面部分内容的截图:

trwebocr的识别结果:

所有的文字都被识别出来了!还是非常nice的。

过验证码

有这么强大的工具,过验证码岂不是轻而易举。验证码的图片如下:

直接上代码:

JWYN被成功识别出来。大功告成!!!!!!!

python安装模块的时候建议使用豆瓣源,真的好快。

缺陷

trwebocr的准确率达不到100%,不过依然不能掩盖它强大的OCR功能。当然也可以自己实现类似的功能,使用opencv+CNN效果也不错。

滑块

滑块验证码是在网站、App等应用中常见的一种验证方式,通过按照一定规则滑动滑块到指定位置完成验证,才可以进行下一步操作。滑块验证码有两种设计,一种是在滑动框内“一滑到底”即完成验证的,还有一种是滑动滑块拼合拼图完成验证的,如下图所示。由于拼图式的滑块验证码安全性更高,趣味性更强,“一滑到底”式的滑块验证码已经基本被淘汰。

搞定滑块

使用滑块机制的网站也有好多,增大了爬虫的难度,常见的滑块验证:

获取图片

滑块验证第一步需要获取大图片,后面统称为target,以及小图片,后面称为template。具体可参见自动登陆QQ空间(3)。 (1) 如果target和template都可以正常下载的话,直接进行下载。 (2 ) 如果不能下载的话,可以使用两种方式进行获取:

第一种方式是使用chromeDriver的截图功能

第二种方式是使用代理截获相应下载图片: 笔者使用的代理框架是Titanium[3](C#)框架。

图片不能下载却可以显示出来使用到技术是img的onload属性,onload 事件在图片加载完成后立即执行。下面的代码就是当图片加载完成后立即删除

图片匹配

文中代码具体可参见自动登陆QQ空间(3)和代码中相应的注释。 python版本:


写在最后

大部分验证码和滑块的问题可以通过文章中的方式搞定,如果是短信验证码,可能需要接码平台来搞定了。最后上一段代码,模拟人类滑动滑块行为的:

公众号

更多内容,欢迎关注我的微信公众号:半夏之夜的无情剑客。

References

 Dwarf2: https://github.com/BurningTeng/Dwarf2
 github: https://github.com/BurningTeng/OCR_frame
 Titanium: https://github.com/justcoding121/titanium-web-proxy


搞定滑块和验证码的评论 (共 条)

分享到微博请遵守国家法律