当前位置:首页 > 代码 > 正文

验证码识别代码(验证码识别代码怎么查)

admin 发布:2022-12-19 23:32 161


本篇文章给大家谈谈验证码识别代码,以及验证码识别代码怎么查对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Python有什么好的库可以识别验证码

要安装pytesseract库,必须先安装其依赖的PIL及tesseract-ocr,其中PIL为图像处理库,而后面的tesseract-ocr则为google的ocr识别引擎。

pytesseract安装

直接使用pip install pytesseract安装即可,或者使用easy_install pytesseract

Python验证码识别代码:

import pytesseract

from PIL import Image

image = Image.open('vcode.png')

vcode = pytesseract.image_to_string(image)

print (vcode)

验证码识别技术

public void service(HttpServletRequest req, HttpServletResponse res)

throws IOException

{

// 验证码图片的宽度。

int width = 70;

//验证码图片的高度。

int height=36;

BufferedImage buffImg=new BufferedImage(width,height,

BufferedImage.TYPE_INT_RGB);

Graphics2D g=buffImg.createGraphics();

//创建一个随机数生成器类。

Random random=new Random();

// 设定图像背景色(因为是做背景,所以偏淡)

g.setColor(getRandColor(180, 250));

g.fillRect(0,0,width,height);

//创建字体,字体的大小应该根据图片的高度来定。

Font font=new Font("Times New Roman",Font.PLAIN,28);

//设置字体。

g.setFont(font);

//画边框。

g.setColor(Color.BLACK);

g.drawRect(0,0,width-1,height-1);

// 随机产生160条干扰线,使图象中的认证码不易被其它程序探测到。

g.setColor(Color.GRAY);

for (int i=0;i50;i++) {

int x = random.nextInt(width);

int y = random.nextInt(height);

int xl = random.nextInt(12);

int yl = random.nextInt(12);

g.drawLine(x,y,x+xl,y+yl);

}

//randomCode用于保存随机产生的验证码,以便用户登录后进行验证。

StringBuffer randomCode=new StringBuffer();

// 设置默认生成4个验证码

int length = 4;

// 设置备选验证码:包括"a-z"和数字"0-9"

String base = "abcdefghijklmnopqrstuvwxyz0123456789";

int size = base.length();

//随机产生4位数字的验证码。

for (int i=0;ilength;i++) {

//得到随机产生的验证码数字。

int start = random.nextInt(size);

String strRand = base.substring(start, start + 1);

//用随机产生的颜色将验证码绘制到图像中。

// g.setColor(new Color(red,green,blue));

// 生成随机颜色(因为是做前景,所以偏深)

g.setColor(getRandColor(1, 100));

g.drawString(strRand,13*i+6,28);

//将产生的四个随机数组合在一起。

randomCode.append(strRand);

}

//将四位数字的验证码保存到Session中。

HttpSession session=req.getSession();

session.setAttribute("rand",randomCode.toString());

//禁止图像缓存。

res.setHeader("Pragma","no-cache");

res.setHeader("Cache-Control","no-cache");

res.setDateHeader("Expires", 0);

res.setContentType("image/jpeg");

//将图像输出到Servlet输出流中。

ServletOutputStream sos=res.getOutputStream();

ImageIO.write(buffImg, "jpeg",sos);

sos.close();

}

Color getRandColor(int fc,int bc){//给定范围获得随机颜色

Random random = new Random();

if(fc255) fc=255;

if(bc255) bc=255;

int r=fc+random.nextInt(bc-fc);

int g=fc+random.nextInt(bc-fc);

int b=fc+random.nextInt(bc-fc);

return new Color(r,g,b);

}

}

这个是之前弄过的一个,可能比你的需求是简单了些,你就作为简单的参考吧

如何利用Python做简单的验证码识别

先是获取验证码样本。。。我存了大概500个。

用dia测了测每个字之间的间距,直接用PIL开始切。

from PIL import Image

for j in range(0,500):

f=Image.open("../test{}.jpg".format(j))

for i in range(0,4):

f.crop((20+20*i,0,40+20*i,40)).save("test{0}-{1}.jpg".format(j,i+1))

上面一段脚本的意思是把jpg切成四个小块然后保存

之后就是二值化啦。

def TotallyShit(im):

x,y=im.size

mmltilist=list()

for i in range(x):

for j in range(y):

if im.getpixel((i,j))200:

mmltilist.append(1)

else:

mmltilist.append(0)

return mmltilist

咳咳,不要在意函数的名字。上面的一段代码的意思是遍历图片的每个像素点,颜色数值小于200的用1表示,其他的用0表示。

其中的im代表的是Image.open()类型。

切好的图片长这样的。

只能说这样切的图片还是很粗糙,很僵硬。

下面就是分类啦。

把0-9,“+”,”-“的图片挑好并放在不同的文件夹里面,这里就是纯体力活了。

再之后就是模型建立了。

这里我试了自己写的还有sklearn svm和sklearn neural_network。发现最后一个的识别正确率高的多。不知道是不是我样本问题QAQ。

下面是模型建立的代码

from sklearn.neural_network import MLPClassifier

import numpy as np

def clf():

clf=MLPClassifier()

mmltilist=list()

X=list()

for i in range(0,12):

for j in os.listdir("douplings/douplings-{}".format(i)):

mmltilist.append(TotallyShit(Image.open("douplings/douplings-{0}/{1}".format(i,j)).convert("L")))

X.append(i)

clf.fit(mmltilist,X)

return clf

大概的意思是从图片源中读取图片和label然后放到模型中去跑吧。

之后便是图像匹配啦。

def get_captcha(self):

with open("test.jpg","wb") as f:

f.write(self.session.get(self.live_captcha_url).content)

gim=Image.open("test.jpg").convert("L")

recognize_list=list()

for i in range(0,4):

part=TotallyShit(gim.crop((20+20*i,0,40+20*i,40)))

np_part_array=np.array(part).reshape(1,-1)

predict_num=int(self.clf.predict(np_part_array)[0])

if predict_num==11:

recognize_list.append("+")

elif predict_num==10:

recognize_list.append("-")

else:

recognize_list.append(str(predict_num))

return ''.join(recognize_list)

最后eval一下识别出来的字符串就得出结果了。。

顺便提一句现在的bilibili登陆改成rsa加密了,麻蛋,以前的脚本全部作废,心好痛。

登陆的代码。

import time

import requests

import rsa

r=requests.session()

data=r.get("act=getkey_="+str(int(time.time()*1000))).json()

pub_key=rsa.PublicKey.load_pkcs1_openssl_pem(data['key'])

payload = {

'keep': 1,

'captcha': '',

'userid': "youruserid",

'pwd': b64encode(rsa.encrypt((data['hash'] +"yourpassword").encode(), pub_key)).decode(),

}

r.post("",data=payload)

电脑的本机识别码和验证码是啥

电脑的本机识别码就相当于身份证号;验证码是一种用来区分用户是计算机还是人的公共全自动程序。

电脑的本机识别码是在注册某些正版软件的时候,软件会根据你电脑的信息来生成一个识别码,根据这个识别码来给你分配一个注册码,相当于身份证。 验证码是很多网站通行的方式,不仅可以防止恶意破解密码、刷票、论坛灌水,还能有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,是一种用来区分用户是计算机还是人的公共全自动程序。

一台电脑主要是由CPU,主板,显卡,内存,硬盘,电源,机箱以及显示器,鼠标键盘组成。

游戏验证码了怎么办啊!求C++验证码识别代码

问道验证码识别很难,基本不可能的,是汉字!

可以尝试远程代答,使用接口,调用DLL插件,上传到云端,然后返回答案。

问道的老君查岗基址在一个DLL里,找的话,很要耐心的哦。

我也是做问道挂的,用的是 月光答题。

不建议你写验证码识别,太难了。

python如何识别验证码

我们首先识别最简单的一种验证码,即图形验证码。这种验证码最早出现,现在也很常见,一般由4位字母或者数字组成。例如,中国知网的注册页面有类似的验证码,页面如下所示:

表单中最后一项就是图形验证码,我们必须完全正确输入图中的字符才可以完成注册。

更多有关验证码的知识,可以参考这些文章:

Python3爬虫进阶:识别图形验证码

Python3爬虫进阶:识别极验滑动验证码

Python3爬虫进阶:识别点触点选验证码

Python3爬虫进阶:识别微博宫格验证码

·本节目标以知网的验证码为例,讲解利用OCR技术识别图形验证码的方法。

·准备工作识别图形验证码需要库tesserocr,以mac安装为例:在mac下,我们首先使用Homebrew安装ImageMagick和tesseract库:    brew install imagemagickbrew install tesseract 接下来再安装tesserocr即可:pip3 install tesserocr pillow这样我们就完成了            tesserocr的安装。

·获取验证码为了便于实验,我们先将验证码的图片保存到本地。打开开发者工具,找到验证码元素。验证码元素是一张图片,它的ser属    性是CheckCode.aspk。所以我们直接打开如下链接就可以看到一个验证码,右键保存即可,将其命名为code.jpg:

这样我们就得到一张验证码图片,以供测试识别使用。

相关推荐:《Python教程》

识别测试

接下来新建一个项目,将验证码图片放到项目根目录下,用tesserocr库识别该验证码,代码如下所示:

这里我们新建了一个Image对戏那个,调用了tesserocr的image_to_text( )方法。传入该Image对象即可完成识别,实现过程非常简单,结果如下:

我们可以看到,识别的结果和实际结果有偏差,这是因为验证码内的多余线条干扰了图片的识别。

另外,tesserocr还有一个更加简单的方法,这个方法可以直接将图片文件转为字符串,代码如下:

不过这种方法的识别效果不如上一种的好。

验证码处理

对于上面的图片,我们可以看到其实并没有完全识别正确,所以我们需要对图像作进一步的处理,如灰度转换、二值化等操作。

我们可以利用Image对象的convert( )方法参数传入L,即可将图片转化为灰度图像,代码如下:

传入1即可将图片进行二值化处理,如下所示:

我们还可以指定二值化的阈值。上面的方法采用的是默认阈值127。不过我们不能直接转化原图,要将原图先转化为灰度图像,然后再指定二值化阈值,代码如下:

在这里,变量threshold代表二值化阈值,阈值设置为160,之后我们来看看我们的结果:

我们可以看到现在的二维码就比较方便我们进行识别了;那么对于一些有干扰的图片,我们做一些灰度和二值化处理,这会提高图片识别的正确率。

关于验证码识别代码和验证码识别代码怎么查的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/30335.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载