《高阶前端指北》之Node爬虫脚手架(第九弹)
昨晚,又遇到了卷神,继续向他诉说了卷王的不公。他说:全球经济即将迎来衰退期,很多企业为求生存而选择弃卒保帅。并且还会动刀边缘业务线,寻求生存之道。我说跟我什么关系?他说:此时代将持续数十年,你能卷10年吗?如果不能,想办法寻求更高的价值,做风口中不被吹起的猪。
我突然似懂非懂的醒来了,回一下梦的内容,过于真实。我决定要做出一些改变,比如把node-pachong
写完,准备隐匿一段时间。
识别验证码
滑块识别的算法思路,我在之前的文章中已经提到过,感兴趣的可以往前翻一番。如果想要逆向解析极验可以看这个库:github.com/openHacking…, 详细演示了逆向解析的全过程。
验证码识别
本地方法,需要借助OCR库node-tesseract
和gm
。不过想要提高精准度需要本地训练模型,些许有些麻烦的
const fs = require("fs");
const tesseract = require("node-tesseract");
const gm = require("gm");
const { print } = require("../../src/utils");
const image = require("path").resolve(__dirname, "code.jpg");
let test_image = require("path").resolve(__dirname, "code_1.jpg");
processImg(image, test_image)
.then((text) => {
print(`识别结果:${text}`);
})
.catch((err) => {
print(`识别失败:${err}`, "red");
});
function processImg(imgPath, newPath, thresholdVal) {
return new Promise((resolve, reject) => {
let imageMagick = gm.subClass({ imageMagick: true });
imageMagick(imgPath)
.despeckle()
.contrast(-6)
.write(newPath, (err) => {
if (err) {
reject(err);
} else {
tesseract.process(
newPath,
{ l: "eng", psm: 7, binary: "tesseract" },
(err, data) => {
if (err) {
reject(err);
} else {
resolve(data.trim());
}
}
);
}
});
});
}
现在云端AI平台有很多解决方案,我们大可不必自己手撸:
百度OCR识别方案
百度每天赠送标准版5万次,精准版500次,足够大家解决一些日常需求
const AipOcrClient = require('baidu-aip-sdk/AipOcr');
const fs = require('fs');
const APP_ID = '14406xxx';
const API_KEY = 'Fz7XXXXXXXXXXX';
const SECRET_KEY = 'XEXXXXXXXXXXXXXX';
const client = new AipOcrClient(APP_ID, API_KEY, SECRET_KEY);
const ocrTextTest = async () => {
const options = { detect_direction: true };
// 识别本地图片
const image = fs.readFileSync('./donate_wx.png').toString('base64');
let result = client.generalBasic(image, options);
console.log(result.words_result);
// 识别在线图片
const result = await client.generalBasicUrl('https://lzw.me/wp-content/uploads/2017/02/donate_wx.png');
console.log(result.words_result);
}
ocrTextTest();
阿里云OCR
最近突然发现,阿里云悄悄上线了灵杰AI智能平台,图形识别/文字识别等服务也上线了,整个模式跟百度差不多。看来,闻道有先后,术业just so so啊。
有活动1分钱,可以薅羊毛。不过不建议,没有百度有诚意~
总结
大搞爬虫需要的都已经列举完毕,有一个多线程的库spawn
一直考虑加不加。里面涉及的东西比较多,感兴趣的可以私聊我。
今天把仓库的案例库抽离出来,大家有什么需求都可以issue了。
如果喜欢我的文章,麻烦点个赞,评个论,收个藏,关个注。
手绘图,手打字,纯原创,摘自未发布的书籍:《高阶前端指北》,转载请获得本人同意。
转载自:https://juejin.cn/post/7135650017074741279