阅读数:

nodejs破解验证码

0

说明

node项目,实现了从pc网站抓取登录接口,获得验证码,并自动破解验证码,最终实现用手机自动登录pc网站。简单点就是
用手机重新定义UI,调用爬来的pc接口。接口验证码都好获取,验证如何自动破解呢?

实现

设计到验证码破解,网上node能搜出来的结果很少,都是java之类的,主流的组件叫 tesseract
但是nodejs项目里如何引用呢?我们走起

  • install(linux centos 6.5)

我们的运行环境是linux centos 6.5,首先谷歌了一个tesseract的安装教程,教程有坑,下面分享实际安装步骤

1、install gcc

1
yum install gcc gcc-c++ make

2、install dependent packages 依赖包

1
2
yum install autoconf automake libtool
yum install libjpeg-devel libpng-devel libtiff-devel zlib-devel

3、install leptonica

1
2
3
4
5
6
wget http://www.leptonica.org/source/leptonica-1.68.tar.gz
tar -xvzf leptonica-1.68
cd leptonica-1.68
./configure
make
make install

4、install tesseract 需要翻墙

1
2
3
4
5
6
7
8
wget http://tesseract-ocr.googlecode.com/files/tesseract-3.01.tar.gz
tar -xvzf tesseract-3.01.tar.gz
cd tesseract-3.01
./autogen.sh
./configure
make
make install
ldconfig

有需要的可以去我网盘下载([链接:]http://pan.baidu.com/s/1o8gCD1g 密码:ngno)

5、intall tesseract language package 语言包,需要翻墙

1
2
3
4
5
6
wget http://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.01.eng.tar.gz
tar -xvzf tesseract-ocr-3.01.eng.tar.gz
cd tesseract-ocr
sudo cp -r tessdata/* /usr/local/share/tessdata/
ln -fs /usr/local/bin/tesseract /usr/bin/tesseract
export TESSDATA_PREFIX=/usr/local/share/

有需要的可以去我网盘下载([链接:]http://pan.baidu.com/s/1o8gCD1g 密码:ngno)

6、测试

test

1
tesseract test.jpg out

如果输出:Tesseract Open Source OCR Engine v3.01 with Leptonica就说明安装没有问题了。

out

1
vim out.text

6152 完全正确

  • node调用

经过查找我们找到了tesseract的node包,node-tesseract

1、install

1
npm install node-tesseract --save

2、引用

1
const tesseract = require('node-tesseract');

3、调用

1
2
3
4
5
6
7
8
9
10
/// gif is converted by a gif which getted from a pc website
tesseract.procsss(gif,
function (err, text) {
console.log('the qrcode is ',text)
if (err) {
cb('error');
} else {
cb(text.replace(/\n/g, '')); // 去除空白
}
});

说明下,tesseract破解的时候建议用gif,或者png,不要用gif,因为gif会提示你报错(no pix returned)。
所以最好破解前将图片格式转换下,比如使用imagemagick

4、测试

和单独执行tesseract命令结果一样

最后

由于这个pc站的验证码纹理少干净,所以破解率很高,如果是有纹理干扰的就会下降,当然也不是没有办法提升,
可以通过机器训练来提高,具体教程可参考这位同学的博客


^-^欢迎回复交流^-^


0
赏点咖啡钱^.^