使用 nodejs 代码仅供参考 请按照您的实际情况书写代码 ,浏览器环境自带fetch 函数,不需要require
可以使用 npm 安装 node-fetch 查询当前使用的镜像源:`npm get registry` 设置为淘宝镜像源:`npm config set registry https://registry.npmmirror.com/` 还原为官方镜像源:`npm config set registry https://registry.npmjs.org/` 安装node-fetch npm i node-fetch
import fetch from 'node-fetch' ;
import fs from 'node:fs' ;
//import iconv from 'iconv-lite' ;
//const fetch = require('node-fetch'); //浏览器环境不用引用直接使用下面代码
//const fs = require('node:fs');
function base64_encode(data){
let buff = Buffer.from(data, 'utf-8');;
return buff.toString('base64');
}
function base64_decode(base64){
const buff = Buffer.from(base64, 'base64');
// decode buffer as UTF-8
const str = buff.toString('utf-8');
return str;
//return buff.toString('base64');
}
(async () => {
try {
const url = 'http://dt1.hyocr.com:8080/';
const params = new URLSearchParams();
params.append('dati_type', 8091); //答题类型
params.append('acc_str', 'xxxxxxxxxxxx'); //登录账号查询自己的答题密码串
params.append('extra_str', 'xxxxxxxxxxxx'); //备注 以便答题人员能够理解答题的意思
params.append('zz', 'xxxxxxxxxxxx'); //作者帐号(给予返利)
params.append('pri', '9'); //优先级
params.append('timeout', '70'); //70秒 可以设置别的时间 ,建议不要太短,否则答题无法及时返回
const imgdata = fs.readFileSync('/mnt/e/dama/test7.jpg'); //浏览器环境参考其他方式获取
let imgdatabase64 =base64_encode(imgdata);
params.append('pic', imgdatabase64); //使用base64 加密
//#可以使用base64 编码图片数据
const res = await fetch( url +'uploadpic.php', {method: 'POST', body: params});
const body = await res.text( );
if(body.substr(0,1)=='#'){
console.log("提交图片错误");
return;
}
const questid = body;
let questreqid = setInterval(function(){
const res2 = await fetch( url +'Query.php?sid=' + questid);
const body2 = await res2.text( );
if(!body2){
return;
}
if(body2.substr(0,1)=='#'){
console.log("提交图片错误");
clearInterval(questreqid);
return;
}
console.log("答题结果是",body2);
clearInterval(questreqid);
},5000);
} catch (err) {
console.log('Error:', err.message);
console.log(err);
}
})();
说明:xxxxxxxxxxxxxxx替换成密码串 提交成功后会返回一组字符串 直接用这个字符串每1秒循环get提交到http://dt1.hyocr.com:8080/Query.php 即可 一直取到答案为止 取到答案判断 一下答案的第一个字符串 如果为“#” 即为报错了 如果不是#开头 即为返回的答案