龙空技术网

Delphi突破滑块拼图验证码

锋回路转222 99

前言:

此时你们对“opencv 滑块”大约比较注意,姐妹们都想要了解一些“opencv 滑块”的相关资讯。那么小编在网络上汇集了一些对于“opencv 滑块””的相关文章,希望咱们能喜欢,同学们快快来了解一下吧!

最近在开发项目的时候,遇到一个网页版的滑块拼图验证码,由于需要实现自动化运行,所以需要针对拼图滑块验证码进行突破,在开发过程中使用了多种技术,最终实现了自动运行,具体涉及的方法及步骤介绍如下:

编辑

1、软件中嵌入DCEF3浏览器(我使用的是2623版本),打开包含验证码的页面。

2、通过Delphi控制浏览器,使用JS代码自动填入表单字段,并通过JS代码,实现点击“提交”按钮,弹出验证码画面。

3、由于验证码IMG标签中,src是Base64的形式,需要获取到验证码的背景图及滑块图的Base64数据,将Base64转换为图片保存到本地,形成两幅图片(PNG格式)。

4、在Delphi中利用OpenCV技术加载背景图片和滑块图片,然后对图片灰度化、二值化、模板匹配等操作,最终识别出滑块在背景图中的像素位置,记录该值(X)。

5、在内嵌浏览器中利用JS模拟鼠标点击并拖动滑块,向右移动X像素并抬起鼠标,实现模拟拖动滑块的效果。

通过以上5步,实现了自动拼图滑块验证码的突破。

需要注意的问题:

(1)在运行时需要将浏览器的bin文件复制到运行文件夹中

(2)OpenCV在Delphi中需要安装好,否则没办法调试成功

(3)本人使用的是Delphi XE8环境

(4)识别验证码滑块位置时,要保证背景图、滑块图与网页上显示的Width和Height一致,否则会出现偏差。

(5)识别率并不是100%正确,有时候会出现识别位置错误,这时候需要进行重试。

(6)不要使用Delphi去模拟鼠标拖动滑块,要使用浏览器调用JS去实现(我用Delphi模拟拖动滑块没有成功)

(7)由于网页及Js代码运行后,页面不一定会立即响应,所以要多做判断和延时,以免不成功。

(8)内嵌浏览器与Delphi之间的Base64传递需要采取一定的方法,否则会获取不到Base64的值或者获取到的值不完整。

本人水平有限,如有不妥之处,欢迎指正!

标签: #opencv 滑块