likes
comments
collection
share

《高阶前端指北》之Node爬虫脚手架(第九弹)

作者站长头像
站长
· 阅读数 35

昨晚,又遇到了卷神,继续向他诉说了卷王的不公。他说:全球经济即将迎来衰退期,很多企业为求生存而选择弃卒保帅。并且还会动刀边缘业务线,寻求生存之道。我说跟我什么关系?他说:此时代将持续数十年,你能卷10年吗?如果不能,想办法寻求更高的价值,做风口中不被吹起的猪。

我突然似懂非懂的醒来了,回一下梦的内容,过于真实。我决定要做出一些改变,比如把node-pachong写完,准备隐匿一段时间。

识别验证码

滑块识别的算法思路,我在之前的文章中已经提到过,感兴趣的可以往前翻一番。如果想要逆向解析极验可以看这个库:github.com/openHacking…, 详细演示了逆向解析的全过程。

验证码识别

本地方法,需要借助OCR库node-tesseractgm。不过想要提高精准度需要本地训练模型,些许有些麻烦的

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次,足够大家解决一些日常需求

《高阶前端指北》之Node爬虫脚手架(第九弹)

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啊。

《高阶前端指北》之Node爬虫脚手架(第九弹) 有活动1分钱,可以薅羊毛。不过不建议,没有百度有诚意~

总结

大搞爬虫需要的都已经列举完毕,有一个多线程的库spawn一直考虑加不加。里面涉及的东西比较多,感兴趣的可以私聊我。

今天把仓库的案例库抽离出来,大家有什么需求都可以issue了。

如果喜欢我的文章,麻烦点个赞评个论收个藏关个注

手绘图,手打字,纯原创,摘自未发布的书籍:《高阶前端指北》,转载请获得本人同意。

《高阶前端指北》之Node爬虫脚手架(第九弹)