优秀的编程知识分享平台

网站首页 > 技术文章 正文

Delphi突破滑块拼图验证码(php破解滑块验证码)

nanyue 2024-10-26 11:23:04 技术文章 2 ℃

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


?



编辑


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的值或者获取到的值不完整。


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

?

最近发表
标签列表