① 求大神帮我写一个按键精灵9用的 自动识别输入验证码的脚本
验证码要做特征码十分麻烦。而且要把数字0-9.字母a-z全部做完。,有的不规则的还要扭曲变形。所以都是人民币收费的。价格不菲。
另外有一种一人工代答。你可以网络搜索。自然也是要钱的。
在这里你是得不到答案的、况且、、你给的图中。数字字母就几个也做不了、
② java怎么实现验证码识别
图片验证码是什么
图片验证码,这个大家应该都见过。最普遍的图片验证码就是一张图片上面有4-6个歪歪扭扭的数字字母,图片还有点看不清楚,但是基本可以肉眼识别出上面的数字字母。那为什么要有这个东东呢?
其实验证码的出现为了区分人与机器。对于歪歪妞妞还有点看不清的数字字母图片,由于人脑的特殊构造,是可以完全无障碍识别的,但是想让奇迹识别出这些字母数字,就会出现识别错误。那为什么要区别人与机器呢?假如一个一个系统没有验证码,我知道了你的用户名,并且知道你的登录密码是8位的数字,那我完全可以写个脚本程序穷举出所有的8位数组合,挨个去尝试登录,这个过程对于人来说可能耗时耗力,但是对于程序来说,so easy。所以验证码的出现就会阻止程序进行这样的穷举登录。
随着技术的发展,现在很多的验证码系统都可以通过图像处理、机器学习深度学习等方式进行攻破,图片验证码已经不再安全,即使是非常有名的12306验证码,也已经被利用深度学习达到了很高的识别精度。所以也出现了手机验证码、拖动滑块图片到指定位置的验证码等各种验证码。
③ 如何利用Python做简单的验证码识别
1摘要
验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的防火墙功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越来越严峻。本文介绍了一套字符验证码识别的完整流程,对于验证码安全和OCR识别技术都有一定的借鉴意义。
然后经过了一年的时间,笔者又研究和get到了一种更强大的基于CNN卷积神经网络的直接端到端的验证识别技术(文章不是我的,然后我把源码整理了下,介绍和源码在这里面):
基于python语言的tensorflow的‘端到端’的字符型验证码识别源码整理(github源码分享)
2关键词
关键词:安全,字符图片,验证码识别,OCR,Python,SVM,PIL
3免责声明
本文研究所用素材来自于某旧Web框架的网站完全对外公开的公共图片资源。
本文只做了该网站对外公开的公共图片资源进行了爬取,并未越权做任何多余操作。
本文在书写相关报告的时候已经隐去漏洞网站的身份信息。
本文作者已经通知网站相关人员此系统漏洞,并积极向新系统转移。
本报告的主要目的也仅是用于OCR交流学习和引起大家对验证安全的警觉。
4引言
关于验证码的非技术部分的介绍,可以参考以前写的一篇科普类的文章:
互联网安全防火墙(1)--网络验证码的科普
里面对验证码的种类,使用场景,作用,主要的识别技术等等进行了讲解,然而并没有涉及到任何技术内容。本章内容则作为它的技术补充来给出相应的识别的解决方案,让读者对验证码的功能及安全性问题有更深刻的认识。
5基本工具
要达到本文的目的,只需要简单的编程知识即可,因为现在的机器学习领域的蓬勃发展,已经有很多封装好的开源解决方案来进行机器学习。普通程序员已经不需要了解复杂的数学原理,即可以实现对这些工具的应用了。
主要开发环境:
python3.5
python SDK版本
PIL
图片处理库
libsvm
开源的svm机器学习库
准备原始图片素材
图片预处理
图片字符切割
图片尺寸归一化
图片字符标记
字符图片特征提取
生成特征和标记对应的训练数据集
训练特征标记数据生成识别模型
使用识别模型预测新的未知图片集
达到根据“图片”就能返回识别正确的字符集的目标
- def get_feature(img): """
- 获取指定图片的特征值,
- 1. 按照每排的像素点,高度为10,则有10个维度,然后为6列,总共16个维度
- :param img_path:
- :return:一个维度为10(高度)的列表 """
- width, height = img.size
- pixel_cnt_list = []
- height = 10 for y in range(height):
- pix_cnt_x = 0 for x in range(width): if img.getpixel((x, y)) == 0: # 黑色点
- pix_cnt_x += 1
- pixel_cnt_list.append(pix_cnt_x) for x in range(width):
- pix_cnt_y = 0 for y in range(height): if img.getpixel((x, y)) == 0: # 黑色点
- pix_cnt_y += 1
- pixel_cnt_list.append(pix_cnt_y) return pixel_cnt_list
关于环境的安装,不是本文的重点,故略去。
6基本流程
一般情况下,对于字符型验证码的识别流程如下:
7素材准备
7.1素材选择
由于本文是以初级的学习研究目的为主,要求“有代表性,但又不会太难”,所以就直接在网上找个比较有代表性的简单的字符型验证码(感觉像在找漏洞一样)。
最后在一个比较旧的网站(估计是几十年前的网站框架)找到了这个验证码图片。
原始图:
然后就将图片素材特征化,按照libSVM指定的格式生成一组带特征值和标记值的向量文
④ 如何利用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)
⑤ 谁来教我怎么用按键精灵做自动识别验证码的脚本
识别验证码,也就可以识别一些简单的,复杂点的还是要涉及内存。
不过现在的脚本都是用远程人工代答的。
学习脚本制作的话,可以网络搜索去学习TC,很不错的一款脚本开发软件。
⑥ 谁有自动识别验证码输入验证码的脚本
是网页的YZ码吗?
网页可以使用木头的网页自动操作软件,里面有YZ码识别功能呀,能够自动识别输入YZ码。还可以完成刷新,点ji,提交操作!
⑦ 高手指教 验证码识别 本人用的按键精灵软件 如何做识别验证码脚本,重叠点击是否能点下一张继续识别
无法教,制作这个工程价值500以上,验证码歪得很利害准确率也不会很高,建议用人工打码。
⑧ 按键精灵脚本中如何自动识别并输入验证码
验证码是图片,画的东倒西歪的,还有重叠的,有的人都不认识,软件怎么会认识呢?可以雇人填验证码,这是你不用自己动手的唯一选择,任何人说他能用软件做到自动填都是吹
⑨ 如何利用Python做简单的验证码识别
最近在折腾验证码识别。最终的脚本的识别率在92%左右,9000张验证码大概能识别出八千三四百张左右。好吧,其实是验证码太简单。下面就是要识别的验证码。
接下来对图片进行分割。遍历图片中所有像素点,计算每一列像素为0的点的个数(jd)。对于相邻两列,若其中一列jd=0,而另一列jd!=0,则可以认为这一列是验证码中字符边界,由此对验证码进行分割。这样分割能达到比较好的效果,分割后得到的字符图片几乎能与模板完全相同。
(Width,Height) = img2.size
pix2 = img2.load()
x0 = []
y0 = []for x in range(1,Width):
jd = 0
# print x
for y in range(1,Height): # print y
if pix2[x,y] == 0:
jd+=1
y0.append(jd) if jd > 0:
x0.append(x)#分别对各个字符边界进行判断,这里只举出一个 for a in range(1,Width): if (y0[a] != 0)&(y0[a+1] != 0):
sta1 = a+1
分割完成后,对于识别,目前有几种方法。可以遍历图片的每一个像素点,获取像素值,得到一个字符串,将该字符串与模板的字符串进行比较,计算汉明距离或者编辑距离(即两个字符串的差异度),可用Python-Levenshtein库来实现。
我采用的是比较特征向量来进行识别的。首先设定了4个竖直特征向量,分别计算第0、2、4、6列每一列像素值为0的点的个数,与模板进行比较,若小于阈值则认为该字符与模板相同。为了提高识别率,如果通过竖直特征向量未能识别成功,引入水平特征向量继续识别,原理与竖直特征向量相同。
另外,还可以通过局部特征进行识别。这对于加入了旋转干扰的验证码有很好效果。由于我写的脚本识别率已经达到了要求,所以并没有用到这个。
最后的结果是这样的:
最终在模板库只有25条的情况下,识别率在92%左右(总共测试了一万六千张验证码)。好吧,只能说验证码太简单。。
以上。
⑩ 怎么用按键精灵脚本识别验证码里的数字(0~9)并同时输入
简单的办法是,把图分成五个区域来依次识别,毕竟你这个数字的字体是固定的
存好0-9的单数字图片,找图就可以了
另外是
把各数字的特征点找出来,只要查到某点有白色,就可以判断为该数字,这个你要先把每个数字的特征点找到,放到画笔里面开大像素,慢慢找
说明:特征点--每个数字都可以看成是5X8的黑白点组成的,每个数字都有一个白点是其它数字在这个位置上没有的,只要找到这个白点,就是这个数字,指向性强,不易误判