一、截取验证码图片
代码如下(示例):
Call Plugin.Pic.PrintScreen(左上角x, 左上角y, 右下角x, 右下角y, "存储文件路径\文件名.bmp")
Delay 3000 //截图操作设置高延迟,保证图片的存储
二、读取验证码图片为base64
代码如下(示例):
//下面三句话,固定格式,原理不知
Set objXMLDoc=CreateObject("Microsoft.XMLDOM")
objXMLDoc.loadXML "<?xml version='1.0' ?><data></data>"
Set fs = createObject("Scripting.FileSystemObject")''FSO组件
FilePath="存储文件路径\文件名.bmp"
if fs.FileExists(FilePath) Then //判断File文件是否存在
Set objStream = CreateObject("ADODB.Stream") //用 stream 来读取数据
objStream.Type = 1
objStream.Open
objStream.LoadFromFile FilePath
objXMLDoc.documentElement.dataType = "bin.base64"
objXMLDoc.documentElement.nodeTypedvalue = objStream.Read
//数据流读取结束.得到了值 objXMLDoc
//创建XML文件
Set xml = CreateObject("Microsoft.XMLDOM")
xml.load objXMLDoc
if xml.ReadyState>2 Then
Set root=xml.getElementsByTagName("data")
Base64 = root.Item(0).Text
//TracePrint "Base64=" & Base64
Base64 = Replace(Base64,vbLf,"") '不知道为什么带换行符,可能是长度不够自动换行,需要去除掉
else
Base64=""
End If
Set xml=Nothing
Set objStream=Nothing
else
Base64=""
End If
该处使用的url网络请求的数据。
三、http请求验证码识别API
Set http = CreateObject("Msxml2.ServerXMLHTTP.3.0")
http.Open "Post", "API网址", False
//请求头的设置,具体情况自己设置,我这里是一个叫“图鉴”的识别网站
http.setRequestHeader "Authorization", "APPCODE b0fc661ed31d4389b8b89c7ba3ae08c4"
http.setRequestHeader "Content-Type", "application/json;charset=UTF-8"
Dim t
//请求的参数大多数都要求为json格式,注意按键精灵的字符转义的格式为双引号
t = "{""username"":""账户"",""password"":""密码"",""typeid"":""3"",""image"":"""&Base64&"""}"
http.Send(t)
四、获取返回值,获得验证码
If http.readyState = 4 Then
//应用神梦插件,资源可见文章最后
result = Plugin.SMWH.GetJSON(http.responsetext, "data.result")
End If
http.abort
Set http = Nothing
code=Mid(result, 1, 4)//防止验证码识别出现空格,只去4位
应用插件
神梦插件下载地址:
链接:https://pan.baidu.com/s/120Mcq7KaQ8UOi2bFe6_MQg
提取码:pjwt