失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > WEB页面验证码自动识别并填充

WEB页面验证码自动识别并填充

时间:2020-11-19 11:25:39

相关推荐

WEB页面验证码自动识别并填充

独角兽企业重金招聘Python工程师标准>>>

现在许多页面在登陆的时候都需要根据验证码图片输入验证码,你是否经常碰到类似的想法:我能否自动识别该验证码并自动填充到对应的验证码输入框呢?

在后续的描述中,我将一步一步的完成该想法,概要的步骤如下:

1、需要在本机安装开源的Tesseract-OCR,并下载对应的汉子字库,这里我不详述,网上有许多文章;

2、因为需要自动填充,我们这里实现的方式是使用VB做一个外壳,在这个壳里头放一个webbrowser,说白了这个webbrowser就是一个ie的对象,我们可以在这个IE对象里头浏览网页,当然我们也可以对这个ie对象进行各种操作;

3、在上述的webbrowser打开你需要访问的、带验证码的登陆页面;

4、通过以下方法,将登陆页面上的验证码图片,保存到你的本地硬盘:

'保存网页上图片(按图片链接查找)

Public Function SaveWebImgUrlLike(Web1 As WebBrowser, UrlLike As String, Optional SaveToFile As String, Optional url As String) As Boolean

On Error Resume Next

Dim x

Dim CtrlRange

For Each x In Web1.document.All

If x.tagName = "IMG" Then

If InStr(x.src, UrlLike) > 0 Then

url = x.src

Set CtrlRange = Web1.document.body.createControlRange()

CtrlRange.Add (x)

Clipboard.Clear

CtrlRange.execCommand ("Copy")

End If

End If

Next

On Error Resume Next

If SaveToFile <> "" Then

Kill SaveToFile

SavePicture Clipboard.GetData, SaveToFile

End If

SaveWebImgUrlLike = eRR.Number = 0

Exit Function

eRR:

End Function

'以下是调用上述方法,在这个页面上,这个验证码图片的id为frameValidationServlet

SaveWebImgUrlLike ESSWeb, "frameValidationServlet", App.Path + "/Tesseract-OCR/1.jpg", ""

4、调用Tesseract-OCR的方法将图片转成文本文件

ShellExe App.Path + "/Tesseract-OCR/tesseract.exe ", App.Path + "/Tesseract-OCR/1.jpg " + App.Path + "/Tesseract-OCR/1"

5、读取文本文件中的验证码内容:

'获取随机码

Dim randCode As String

Open App.Path + "/Tesseract-OCR/1.txt" For Input As #1

Do

Line Input #1, randCode

Loop Until EOF(1)

Close (1)

'去除回车

randCode = Replace(randCode, "" + Chr(13), "")

randCode = Replace(randCode, "" + Chr(10), "")

6、将文本文字填充到验证码的框里面:

ESSWeb.document.getElementById("txtVerifyCodes").Value = 识别的验证码

7、其它描述:Tesseract-OCR是个开源产品,如果是白底黑字的情况下,识别率还是非常高的,但如果验证码图片混淆的非常厉害,那效果可能不是太理想了。我的测试页面是联通的ess登陆界面,该图片虽然有混淆,但识别率仍可达到90%以上。该测试网址的网址为:/ ,识别的图片如:

如果觉得《WEB页面验证码自动识别并填充》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。