网站首页 > 技术文章 正文
最近在开发项目的时候,遇到一个网页版的滑块拼图验证码,由于需要实现自动化运行,所以需要针对拼图滑块验证码进行突破,在开发过程中使用了多种技术,最终实现了自动运行,具体涉及的方法及步骤介绍如下:
?
编辑
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的值或者获取到的值不完整。
本人水平有限,如有不妥之处,欢迎指正!
?
猜你喜欢
- 2024-10-26 最近别来杭州!怕你不想回去了……
- 2024-10-26 为什么有人不用免费的WPS,偏要花钱用Office?看完这些就知道了
- 2024-10-26 还在苦恼验证码怎么实现?看看这个验证码组件合集,你想要的都有
- 2024-10-26 时间浪费在哪儿?(时间浪费四种情形)
- 2024-10-26 qq账号被冻结了怎么快速解冻手机号换了
- 2024-10-26 RPA实战:“滑动”验证码与按照“语序”点击两类验证码
- 2024-10-26 产品心理学:给予用户理解和宽容(产品的心理功能有( )( )( ))
- 2024-10-26 OPPO Reno4 Pro忘记OPPO帐号密码怎么办?
- 2024-10-26 你知道新买的手机,怎样重新登录微信账号吗?
- 2024-10-26 短信验证码的深度剖析(短信验证码起什么作用)
- 11-26Win7\8\10下一条cmd命令可查得笔记本电脑连接过的Wifi密码
- 11-26一文搞懂MySQL行锁、表锁、间隙锁详解
- 11-26电脑的wifi密码忘记了?一招教你如何找回密码,简单明了,快收藏
- 11-26代码解决忘记密码问题 教你用CMD命令查看所有连接过的WIFI密码
- 11-26CMD命令提示符能干嘛?这些功能你都知道吗?
- 11-26性能测试之慢sql分析
- 11-26论渗透信息收集的重要性
- 11-26如何查看电脑连接过的所有WiFi密码
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)