javascript 实现若快验证码识别 【js字符串转为字节流】

 最近搞若快的打码平台对接,目前利用的是javascript脚本调用系统组件来实现验证码图片转发的。

设想的是通过WINHTTP.WINHTTPREQUEST.5.1访问验证码图片并且转发提交给若快的api接口,然后若快接口返回相关信息。

编写的过程中发现,因为接口接受的POST参数包含图片的字节信息和其他表单参数,但是js字符串不容易转换为字节流,而且最终要合并为一个流来提交,参考了下官方的几个例子,最终解决,下面贴一下主要函数。

将js里字符串(string类型) 通过 ADODB.Stream 转换为 字节流

function StringToBytes(strData){
strCharset="UTF-8";
var objFile = new ActiveXObject("ADODB.Stream");
objFile.Type = 2;
objFile.Charset = strCharset;
objFile.Open();
objFile.WriteText(strData);
objFile.Position = 0;
objFile.Type = 1;
if (strCharset == "UNICODE"){
objFile.Position = 2;
}else if(strCharset == "UTF-8"){
objFile.Position = 3;
}
var strbytes=objFile.Read(-1);
objFile.Close();
objFile=null;
return strbytes;
}

 

其实有了上面的函数,合并为一个流就简单多了。

stream = new ActiveXObject(‘ADODB.Stream’);
stream.Type = 1;
stream.Mode = 3;
stream.Open();

stream.Write(StringToBytes(spostdata));
stream.Write(oxhr.responseBody);
stream.Write(StringToBytes("\r\n\r\n—————————–8d070bdf16538b4–"));

stream.Position = 0;  // 这里需要重新定位到0 否则post数据为空。
spostdata = stream;  // 提交的 post 数据 直接 winhttp 发送就好

One Comment on “javascript 实现若快验证码识别 【js字符串转为字节流】”

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注