介绍一个超高识别率windows程序,基于这个exe实现一个稳定可用识别服务
识别程序介绍
冷月的验证码识别程序核心文件有三个:如下图红色框三文件
- 各文件说明 | 文件 | 说明 | 备注 | | --- | --- | --- | | 识别.exe | window下可执行识别程序 | 名称可修改 | | ty.dll | 识别程序所需动态库 | 名称不可修改 | | 配置.conf | 程序所需配置文件 | 文件名称不可修改,配置文件中端口、线程数、超时时间参数可修改 | | restart.bat | 服务重启脚本 | 非必须程序,后面会介绍用途,主要完成服务重启 |
配置文件内容如下图所示
在window下直接双击《识别.exe》文件,即可启动识别程序,启动之后界面如下图:
本地启动之后,可以使用下面的python测试代码,测试本地识别是否可用
import json
import requests
import urllib3
urllib3.disable_warnings()
def download_yzm():
'''
下载验证码
'''
headers = {"User-Agent":"Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"}
url = "https://neris.csrc.gov.cn/shixinchaxun/login/ycode.do"
resp = requests.get(url=url, headers=headers, verify=False)
if resp.status_code == 200:
return resp.content
else:
return None
def recogition(yzm_data):
'''
验证码识别
:param yzm_data:
:return:
'''
resp = requests.post('http://127.0.0.1:7788', data=yzm_data)
return resp.text
def run():
yzm_data = download_yzm()
if yzm_data:
res = recogition(yzm_data)
json_obj = json.loads(res)
print(json_obj)
if __name__ == "__main__":
run()
python程序运行之后截图:红色框中结果为识别结果,可以看出识别结果为json对象
exe识别服务截图:红色输出为服务收到识别请求之后输出日志,由日志可以看出识别结果和识别时间,识别时间都在几十毫秒.
基于以上python测试代码,可以自行修改测试代码中验证码链接地址,测试不同验证码识别效果,本人测试截图:
由上图不同样式、不同长度验证码识别结果看出,冷月这个验证码识别程序识别准确率都很高,应对目前常见由26字母+10数字组成的字符验证码识别来说,准确率相当高。
基于冷月exe实现识别服务
这个验证码识别程序是一个windows下的exe,需要在windows下运行,而且直接运行还会弹出一个如上图中的黑色窗口。有没有一个办法让他像后台服务一样运行?
普通exe程序如何注册成后台服务
要把普通的exe应用程序注册为服务,需要两个小软件:Instsrv.exe和Srvany.exe。Instsrv.exe可以给系统安装和删除服务,Srvany.exe可以让程序以服务的方式运行。 首先网上下载这两个exe程序,下载之后放到本地任何一个路径下面,我放在c盘installfiles文件夹下,之后打开cmd,在cmd窗口下执行如下命令
>> C:\\installfiles\\instsrv.exe MyServer1 C:\\installfiles\\srvany.exe
//运行这个命令时建议全路径
MyServer1为你要注册的服务名称,以上命令运行成功之后,检查任务管理器,就会看到MyServer1这样一个名称的服务
注册表添加参数:
注册表:位置
计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\MyServer1\Parameters
添加如下内容:
AppDirectory C:\YZMRecognition
Application C:\YZMRecognition\yzmsb.exe
AppParameters
yzmsb.exe为《通用识别.exe》改名之后的识别程序名称(不习惯中文名称)。
注册表添加完以上参数,现在就可以通过任务管理器来启动和关闭识别服务了,可以按照上面操作流程注册多个服务,识别程序复制多份,放在不同路径下,记得改名,同时修改配置文件中的端口号,下图是我注册的多个服务截图:
注意事项
实际应用中发现,一个服务在稳定运行一段时间之后,就会存在无法提供识别的情况(特别识别并发高时),重启服务又可正常识别,所以也是推荐大家实际使用时部署多个的原因,这些识别服务定时重启,就可以达到一只可以访问的目的。访问识别接口时可以从多个识别接口中随机获取一个来访问,失败之后尝试重试,这样就可以实现一个稳定可用的识别服务。
如何让服务自动重启:
windows下新建一个后缀为bat的restart.bat文件,文件内容如下图,MyServer1为你注册的服务名称。
有了这个重启服务脚本文件,定时让这个脚本自动运行一次,即可达到重启识别服务的目的。windows下定时任务详细配置方法可百度,附定时主要配置截图:
总结
实际部署时我用了一台windows服务器去部署了多个识别服务,每一个识别服务每隔15分钟自动重启一次,保证每个识别服务都可以7*24h可用。
有了这个识别服务,对于日常打码可以节省很多时间和经历。需要文中所有程序文件的,留邮箱地址,看到之后会及时发送截图中所有文件到邮箱之中,大家也可以自行网上查找下载。敬畏法律,请勿做非法用途!!!
附我日常使用的识别流程图:
在此感谢冷月提供的通用识别exe,有需要的同学也可以百度搜索冷月,阅读他的博客文章和验证码识别开源代码