为什么用脚本刷网页过两天会出现滑块验证

JavaScript08

为什么用脚本刷网页过两天会出现滑块验证,第1张

是因为网站识别出你是使用selenium 。

滑块验证码是在网站、APP等应用中常见的一种验证方式,通过按照一定规则滑动滑块到指定位置完成验证,才可以进行下一步操作。滑块验证码有两种设计,一种是在滑动框内“一滑到底”即完成验证的,还有一种是滑动滑块拼合拼图完成验证的。

由于拼图式的滑块验证码安全性更高,趣味性更强,所以多数网站或APP都选择了拼图式的滑块验证码。

安全事项:

浏览器是用来检索、展示以及传递Web信息资源的应用程序

。Web信息资源由统一资源标识符(Uniform Resource Identifier,URI)所标记,它是一张网页、一张图片、一段视频或者任何在Web上所呈现的内容。浏览器是我们上网必备的工具。

而在我们使用浏览器的过程中有可能因为操作失误造成一些安全隐患

,所以如何保证浏览器的安全就非常重要了。下面以IE8浏览器为例来对浏览器进行安全管理

。可以识别。滑块验证码的形式也很多,大多都类似下面这样的。

一般类似这样的验证码已经有很成熟的解决方案了。比如js破解,图像识别破解等等。但是我在项目中遇到的验证码有一点不同是下面这种验证码(拼夕夕的验证码)可以看到背景更复杂,而且它使用两个缺口,两个缺口的形状不一样,因此对于此类验证码识别更加困难。

二、采用的方法

对该类新型验证码分析,最开始准备使用深度学习的方法,大力出奇迹,但是有一个现实问题没多少数据。公司目前收集的也只有六七十张,于是只好放弃深度学习,采用传统方法opencv来做。使用opencv做的思路就是,获取滑块图和背景图,进行模板匹配,匹配度最高作为结果输出

1.滑块图、背景图切分

想要拿到干净的滑块图和背景图需要进行js破解,这个破解比较耗时一张验证码大概需要30s,30s后验证码都失

方法/步骤

打开网页编辑器编写div+css代码,先把界面做好,然后再做功能,代码如下所示:

<form name="form1">

请输入要产生的验证码的位数:<input type="text" name="digit" id="digit">

<br><br>

<input type="button" value="生成" onClick="deal()">

&nbsp<input type="button" value="刷新" onClick="qc()">

<br><br>

<div id="result"></div>

</form>

请点击输入图片描述

写好之后,我们写CSS代码,然后再调试一下,争取在前台显示的美观一些。CSS代码如下所示:

<style>

body{background:#ccc }

form{margin-left:20%margin-top:10%}

</style>

请点击输入图片描述

弄好之后用浏览器打开,界面如下图所示:

请点击输入图片描述

弄好前端界面之后,我们就需要写JS了,步骤主要如下所示,首先我们先定义一个参数,这个参数是我们输入文本框的数字,生成随机数用到了random方法,先看第一个方法,第一个方法我们用for循环来显示出随机数的个数。代码如下所示:

function cg(digit)

{

var result=""

for(i=0i<parseInt(digit)i++)

{

result=result+(parseInt(Math.random()*10)).toString()

}

return  result

}

请点击输入图片描述

第一个函数写好后我们来看第二个,第二个函数是输出生成的验证码,代码很少:如下所示(含删除代码)

function deal()

{

result.innerHTML="产生的验证码是:"+cg(form1.digit.value)

}

function qc()

{

form1.digit.value=""

}

请点击输入图片描述

写好之后,我们验证一下,我在文本框内输入5,结果输出了5个数字,结果显示没有错误。

请点击输入图片描述

当然这么写也是有BUG的,例如输入0、负数、或者小于1的小数都不会生成验证码。如果大家有兴趣,可以修改这些BUG。

请点击输入图片描述