requests模块;

opencv-python模块;

numpy模块;

keras模块;

tensorflow模块;

以及一些python自带的模块。

环境搭建

安装python并添加到环境变量,pip安装需要的相关模块即可。

项目简介

让我们先来简单介绍一下之前开源的DecryptLogin包吧,省得很多刚关注我的小伙伴一脸懵逼。DecryptLogin是一个借助于requests包进行各大网站模拟登录的python第三方包,项目地址:

https://github.com/CharlesPikachu/DecryptLogin

项目文档:

https://httpsgithubcomcharlespikachudecryptlogin.readthedocs.io/zh/latest/

pip安装这个包之后,你可以很轻松地实现各大网站的模拟登录操作,例如模拟登录知乎:

from DecryptLogin import loginlg = login.Login()infos_return, session = lg.zhihu(username='Your Username', password='Your Password')其中infos_return是一个字典对象,用于记录用户登录后的一些信息,而session则是用户登录之后的会话。进行模拟登录的意义在于很多网站的数据必须在用户登录的状态下才能看到,并且很多操作也必须在用户登录的状态下才能进行(例如每日签到等等)。上面那段代码运行后效果如下:换句话说,在默认情况下,DecryptLogin库要求用户手动输入登录时遇到的验证码。于是很多小伙伴就留言问了,能不能让DecryptLogin自动处理验证码呢?毕竟每次都手动输入验证码实在是太麻烦了。当然可以,你只需要自己定义一个验证码处理函数,然后在登录的时候作为参数传入就ok了,示例代码如下:from PIL import Imagefrom DecryptLogin import login'''定义验证码识别函数'''def crackvcFunc(imagepath):    # 打开验证码图片    img = Image.open(imagepath)    # 识别验证码图片    result = IdentifyAPI(img)    # 返回识别结果(知乎为数字验证码)    return resultlg = login.Login()infos_return, session = lg.zhihu(username='Your Username', password='Your Password', crackvcFunc=crackvcFunc)上面这些内容其实在项目文档里都有详细的介绍。然而,还是会有小伙伴留言问:哎,算了,送佛送到西吧。于是,我们的hackcaptcha包诞生了,一款主要服务于验证码自动识别的python第三方包,项目文档:https://hackcaptcha-en.readthedocs.io/zh/latest/因为开源hackcaptcha的主要目的是解决DecryptLogin库的验证码自动处理问题,所以hackcaptcha目前只支持两种类型的验证码自动处理,即数字(含英文字母)验证码以及12306的点击验证码。当然,以后会随着DecryptLogin库的更新而逐渐加入一些新的支持。你只需要pip安装这个库就可以开始使用它了(安装之前建议先提前在电脑上装好keras和对应版本的tensorflow):pip install hackcaptcha对于数字验证码,hackcaptcha直接调用了百度的文字识别API:https://ai.baidu.com/tech/ocr因为我看了一下:用户每天可以免费调用这么多次,个人学习与玩耍使用完全是足够的,毕竟我鼓捣这些东西也不是为了让人剽窃过去进行商用的。具体而言,你需要到上面那个网站上自己注册一个账号,并新建一个应用,从而获取到API Key和Secret Key就行了:然后简单写几行代码就可以实现验证码识别的了:from hackcaptcha.crackers import WebapisCrackercracker = WebapisCracker()infos_return = cracker.digital(imagepath='CAPTCHA IMAGE PATH', webapi_type='baidu', app_id='AppID', api_key='API Key', secret_key='Secret Key')返回的结果格式为:{    'is_success': True,    'result': 'AFD2',    'error_msg': ''}对于12306的点击验证码,我看了下网上别人的做法,一般就是把12306的验证码做一下图片分割:然后分别训一个图片分类器和文字分类器就行了。所以我就直接拿别人的方法来用了。你只需要这样调用就行了:from hackcaptcha.crackers import AlgorithmsCrackercracker = AlgorithmsCracker()infos_return = cracker.click(imagepath='CAPTCHA IMAGE PATH', algorithm_type='zt12306', text_model_path='text.h5', object_model_path='object.h5')返回的结果格式为:{    'is_success': True,     'result': '1,2,5'}其中text.h5和object.h5这两个模型在这可以下载到:https://github.com/CharlesPikachu/hackcaptcha我们可以结合DecryptLogin库来看下效果(请注意,下面的代码只适用于DecryptLogin版本号大于等于0.1.29的情况):from DecryptLogin import loginfrom hackcaptcha.crackers import AlgorithmsCracker'''定义验证码识别函数'''def crackvcFunc(imagepath):    cracker = AlgorithmsCracker()    infos_return = cracker.click(imagepath=imagepath, algorithm_type='zt12306', text_model_path='text.h5', object_model_path='object.h5')    return infos_return['result']lg = login.Login()infos_return, session = lg.zt12306(username='用户名', password='密码', crackvcFunc=crackvcFunc)运行效果:可以发现我们不再需要自己输入那令人头大的12306验证码,而直接调用训练好的模型进行自动识别输入即可实现12306的模拟登录操作了~大功告成~感兴趣的小伙伴自己动手去试试呗~

其中infos_return是一个字典对象,用于记录用户登录后的一些信息,而session则是用户登录之后的会话。进行模拟登录的意义在于很多网站的数据必须在用户登录的状态下才能看到,并且很多操作也必须在用户登录的状态下才能进行(例如每日签到等等)。

上面那段代码运行后效果如下:


python机器学习验证码图片 python验证码模块_用户登录


换句话说,在默认情况下,DecryptLogin库要求用户手动输入登录时遇到的验证码。于是很多小伙伴就留言问了,能不能让DecryptLogin自动处理验证码呢?毕竟每次都手动输入验证码实在是太麻烦了。当然可以,你只需要自己定义一个验证码处理函数,然后在登录的时候作为参数传入就ok了,示例代码如下:

from DecryptLogin import loginlg = login.Login()infos_return, session = lg.zhihu(username='Your Username', password='Your Password')其中infos_return是一个字典对象,用于记录用户登录后的一些信息,而session则是用户登录之后的会话。进行模拟登录的意义在于很多网站的数据必须在用户登录的状态下才能看到,并且很多操作也必须在用户登录的状态下才能进行(例如每日签到等等)。上面那段代码运行后效果如下:换句话说,在默认情况下,DecryptLogin库要求用户手动输入登录时遇到的验证码。于是很多小伙伴就留言问了,能不能让DecryptLogin自动处理验证码呢?毕竟每次都手动输入验证码实在是太麻烦了。当然可以,你只需要自己定义一个验证码处理函数,然后在登录的时候作为参数传入就ok了,示例代码如下:from PIL import Imagefrom DecryptLogin import login'''定义验证码识别函数'''def crackvcFunc(imagepath):    # 打开验证码图片    img = Image.open(imagepath)    # 识别验证码图片    result = IdentifyAPI(img)    # 返回识别结果(知乎为数字验证码)    return resultlg = login.Login()infos_return, session = lg.zhihu(username='Your Username', password='Your Password', crackvcFunc=crackvcFunc)上面这些内容其实在项目文档里都有详细的介绍。然而,还是会有小伙伴留言问:哎,算了,送佛送到西吧。于是,我们的hackcaptcha包诞生了,一款主要服务于验证码自动识别的python第三方包,项目文档:https://hackcaptcha-en.readthedocs.io/zh/latest/因为开源hackcaptcha的主要目的是解决DecryptLogin库的验证码自动处理问题,所以hackcaptcha目前只支持两种类型的验证码自动处理,即数字(含英文字母)验证码以及12306的点击验证码。当然,以后会随着DecryptLogin库的更新而逐渐加入一些新的支持。你只需要pip安装这个库就可以开始使用它了(安装之前建议先提前在电脑上装好keras和对应版本的tensorflow):pip install hackcaptcha对于数字验证码,hackcaptcha直接调用了百度的文字识别API:https://ai.baidu.com/tech/ocr因为我看了一下:用户每天可以免费调用这么多次,个人学习与玩耍使用完全是足够的,毕竟我鼓捣这些东西也不是为了让人剽窃过去进行商用的。具体而言,你需要到上面那个网站上自己注册一个账号,并新建一个应用,从而获取到API Key和Secret Key就行了:然后简单写几行代码就可以实现验证码识别的了:from hackcaptcha.crackers import WebapisCrackercracker = WebapisCracker()infos_return = cracker.digital(imagepath='CAPTCHA IMAGE PATH', webapi_type='baidu', app_id='AppID', api_key='API Key', secret_key='Secret Key')返回的结果格式为:{    'is_success': True,    'result': 'AFD2',    'error_msg': ''}对于12306的点击验证码,我看了下网上别人的做法,一般就是把12306的验证码做一下图片分割:然后分别训一个图片分类器和文字分类器就行了。所以我就直接拿别人的方法来用了。你只需要这样调用就行了:from hackcaptcha.crackers import AlgorithmsCrackercracker = AlgorithmsCracker()infos_return = cracker.click(imagepath='CAPTCHA IMAGE PATH', algorithm_type='zt12306', text_model_path='text.h5', object_model_path='object.h5')返回的结果格式为:{    'is_success': True,     'result': '1,2,5'}其中text.h5和object.h5这两个模型在这可以下载到:https://github.com/CharlesPikachu/hackcaptcha我们可以结合DecryptLogin库来看下效果(请注意,下面的代码只适用于DecryptLogin版本号大于等于0.1.29的情况):from DecryptLogin import loginfrom hackcaptcha.crackers import AlgorithmsCracker'''定义验证码识别函数'''def crackvcFunc(imagepath):    cracker = AlgorithmsCracker()    infos_return = cracker.click(imagepath=imagepath, algorithm_type='zt12306', text_model_path='text.h5', object_model_path='object.h5')    return infos_return['result']lg = login.Login()infos_return, session = lg.zt12306(username='用户名', password='密码', crackvcFunc=crackvcFunc)运行效果:可以发现我们不再需要自己输入那令人头大的12306验证码,而直接调用训练好的模型进行自动识别输入即可实现12306的模拟登录操作了~大功告成~感兴趣的小伙伴自己动手去试试呗~

上面这些内容其实在项目文档里都有详细的介绍。然而,还是会有小伙伴留言问:


哎,算了,送佛送到西吧。于是,我们的hackcaptcha包诞生了,一款主要服务于验证码自动识别的python第三方包,项目文档:

https://hackcaptcha-en.readthedocs.io/zh/latest/

因为开源hackcaptcha的主要目的是解决DecryptLogin库的验证码自动处理问题,所以hackcaptcha目前只支持两种类型的验证码自动处理,即数字(含英文字母)验证码以及12306的点击验证码。当然,以后会随着DecryptLogin库的更新而逐渐加入一些新的支持。你只需要pip安装这个库就可以开始使用它了(安装之前建议先提前在电脑上装好keras和对应版本的tensorflow):

pip install hackcaptcha

对于数字验证码,hackcaptcha直接调用了百度的文字识别API:

https://ai.baidu.com/tech/ocr

因为我看了一下:


python机器学习验证码图片 python验证码模块_python 验证码_02


用户每天可以免费调用这么多次,个人学习与玩耍使用完全是足够的,毕竟我鼓捣这些东西也不是为了让人剽窃过去进行商用的。

具体而言,你需要到上面那个网站上自己注册一个账号,并新建一个应用,从而获取到API Key和Secret Key就行了:


python机器学习验证码图片 python验证码模块_用户登录_03


然后简单写几行代码就可以实现验证码识别的了:

from hackcaptcha.crackers import WebapisCrackercracker = WebapisCracker()infos_return = cracker.digital(imagepath='CAPTCHA IMAGE PATH', webapi_type='baidu', app_id='AppID', api_key='API Key', secret_key='Secret Key')

返回的结果格式为:

{    'is_success': True,    'result': 'AFD2',    'error_msg': ''}

对于12306的点击验证码,我看了下网上别人的做法,一般就是把12306的验证码做一下图片分割:


python机器学习验证码图片 python验证码模块_用户登录_04


然后分别训一个图片分类器和文字分类器就行了。所以我就直接拿别人的方法来用了。你只需要这样调用就行了:

from hackcaptcha.crackers import AlgorithmsCrackercracker = AlgorithmsCracker()infos_return = cracker.click(imagepath='CAPTCHA IMAGE PATH', algorithm_type='zt12306', text_model_path='text.h5', object_model_path='object.h5')

返回的结果格式为:

{    'is_success': True,     'result': '1,2,5'}

其中text.h5和object.h5这两个模型在这可以下载到:

https://github.com/CharlesPikachu/hackcaptcha

我们可以结合DecryptLogin库来看下效果(请注意,下面的代码只适用于DecryptLogin版本号大于等于0.1.29的情况):

from DecryptLogin import loginfrom hackcaptcha.crackers import AlgorithmsCracker'''定义验证码识别函数'''def crackvcFunc(imagepath):    cracker = AlgorithmsCracker()    infos_return = cracker.click(imagepath=imagepath, algorithm_type='zt12306', text_model_path='text.h5', object_model_path='object.h5')    return infos_return['result']lg = login.Login()infos_return, session = lg.zt12306(username='用户名', password='密码', crackvcFunc=crackvcFunc)

运行效果:


python机器学习验证码图片 python验证码模块_验证码_05