智能验证码技术(滑动验证码真的安全)
智能验证码技术(滑动验证码真的安全)await page.goto("https://example.com/"); //跳转到 https://example.com/ 移动鼠标,执行操作const page = await browser.newPage(); //解析一个新的页面。页面是在默认浏览器上下文创建的 跳转到指定页面因此,要想破解一个滑动验证码,代码程序也需要模拟执行以上几步操作。在JS类库puppeteer中,可以使用move、down、up几个函数模拟以上几步。首先,实例化浏览器实例const browser = await puppeteer.launch({ headless: false }); 然后,解析页面
随着移动互联网的飞速发展,各种类型的网站、移动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,此类库主要用于对比图片,也就是在滑块移动的过程,通过不断对比图片,来判断滑块的位置是否正确。
代码实现如下:
效果如下:
看了上面的几个案例,是不是感觉道高一尺魔高一丈呢。其实,随着时间的推移,没有什么是绝对安全的。保证安全的唯一秘诀就是与时俱进,不断模拟攻守之道。
本文由“编码之道”原创,关注“编码之道”获取更多知识