网站首页 > 技术文章 正文
随着移动互联网的飞速发展,各种类型的网站、移动APP等不断在野蛮增长,使得网络信息安全问题频现。为了防止批量注册、论坛灌水、恶意刷票、恶意撞库破解密码等,现在几乎所有平台都会验证码来检测、阻止恶意行为。
目前常见的验证码有图片验证码、滑动验证码和点触式验证码,但由于近来图片识别技术的成熟,现在使用图片验证码的应用正慢慢变少,转而更多的是使用滑动验证码和点触式验证码。滑动验证码和点触式验证码使用用户行为来验证,提升了用户体验,也增加了一定的安全性。
不过,最近来自一篇国外的文章介绍,滑动验证码也可以轻松破解,具体怎么破解,请看下面的内容。
我们知道按照验证码的设计,成功通过滑动验证码的限制,通常要执行如下几步操作:
- 1、将鼠标放在滑动验证码的上方
- 2、按鼠标
- 3、移动鼠标
- 4、释放鼠标
因此,要想破解一个滑动验证码,代码程序也需要模拟执行以上几步操作。在JS类库puppeteer中,可以使用move、down、up几个函数模拟以上几步。
首先,实例化浏览器实例
const browser = await puppeteer.launch({ headless: false });
然后,解析页面
const page = await browser.newPage(); //解析一个新的页面。页面是在默认浏览器上下文创建的
跳转到指定页面
await page.goto("https://example.com/"); //跳转到 https://example.com/
移动鼠标,执行操作
await page.mouse.move(x,y) await page.mouse.down() await page.mouse.move(x,y,{step: 18}) await page.mouse.up()
如下就是使用puppeteer破解滑动验证码的几个案例:
1、普通的滑动验证码
这是一种入门级的滑动验证码,你只需要将验证码上的滑块移动至中间位置即可通过验证码限制。在本例中,表单包含两个输入框和一个滑动验证码,因此,要实现表单的自动提交,你需要先填充表单,然后再滑动滑块。代码实现如下:
2、表单在iframe中的滑动验证码
这种验证码与第1种很类似,不同之处在于此种验证码在iframe种,所以破解此种验证码,你需要先获取iframe元素,然后再在iframe中按照第1种的方式进行验证码破解。代码实现如下:
从图中我们可以看到,代码实现中多了一步,即:
await page.evaluateOnNewDocument(() => { Object.defineProperty(navigator, 'webdriver', { get: () => false }) });
这一步主要用于修正Javascript环境,以便后续操作iframe。
3、拼图型验证码
与1、2种相比,这种验证码相对要复杂很多,此种验证码不仅要移动滑块,而且还要保证滑块位置正确。为在保证滑块位置正确,这里要借助rembrandt.js,此类库主要用于对比图片,也就是在滑块移动的过程,通过不断对比图片,来判断滑块的位置是否正确。
代码实现如下:
效果如下:
看了上面的几个案例,是不是感觉道高一尺魔高一丈呢。其实,随着时间的推移,没有什么是绝对安全的。保证安全的唯一秘诀就是与时俱进,不断模拟攻守之道。
本文由“编码之道”原创,关注“编码之道”获取更多知识
猜你喜欢
- 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)