Python 通过打码平台实现验证码的实现


Posted in Python onMay 13, 2019

 在爬虫时,经常遇到登录需要验证码的情况,简单的验证码可以自己解决,复制的验证码需要借助机器学习,有一定的难度。还有一个简单的方案就是采用付费的打码平台。

比如R若快(http://www.ruokuai.com/client),还有云打码平台(http://www.yundama.com/price.html)

下面以R若快为例介绍打码平台的思路:

R若快平台需要注册两个用户,一个是普通用户,一个开发者用户,

Python 通过打码平台实现验证码的实现

Python 通过打码平台实现验证码的实现

Python 通过打码平台实现验证码的实现

Python 通过打码平台实现验证码的实现

1、首先验证码截图,就是截取网站上登录页面的验证码图片并保存到本地

2、调用打码平台的接口把验证码图片发送到打码平台并获取到验证码结果。

具体代码如下:

#!/usr/bin/env python
# coding:utf-8

import requests
from hashlib import md5


class RClient(object):

  def __init__(self, username='shaoks123', password='123456', soft_id='113452', soft_key='c0d07d796c8e470c92a126df60d61794'):
    self.username = username
    # self.password = md5(password).hexdigest()
    self.password = md5(password.encode("utf-8")).hexdigest()
    self.soft_id = soft_id
    self.soft_key = soft_key
    self.base_params = {
      'username': self.username,
      'password': self.password,
      'softid': self.soft_id,
      'softkey': self.soft_key,
    }
    self.headers = {
      'Connection': 'Keep-Alive',
      'Expect': '100-continue',
      'User-Agent': 'ben',
    }

  def rk_create(self, im, im_type, timeout=60):
    """
    im: 图片字节
    im_type: 题目类型
    """
    params = {
      'typeid': im_type,
      'timeout': timeout,
    }
    params.update(self.base_params)
    files = {'image': ('a.jpg', im)}
    r = requests.post('http://api.ruokuai.com/create.json', data=params, files=files, headers=self.headers)
    return r.json()

  def rk_report_error(self, im_id):
    """
    im_id:报错题目的ID
    """
    params = {
      'id': im_id,
    }
    params.update(self.base_params)
    r = requests.post('http://api.ruokuai.com/reporterror.json', data=params, headers=self.headers)
    return r.json()

  def test(self,imagefile,im_type=1030):
    # im = open('E:\python36_crawl\Veriycode\code\code_823.png', 'rb').read()
    im = open(imagefile, 'rb').read()
    result = self.rk_create(im, im_type)
    print(result['Result'])
    return result['Result']


# if __name__ == '__main__':
#   rc = RClient()
#   im = open('E:\python36_crawl\Veriycode\code\code_823.png', 'rb').read()
#   result = rc.rk_create(im, 1030)
#   print(result['Result'])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 链接和操作 memcache方法
Mar 04 Python
对python append 与浅拷贝的实例讲解
May 04 Python
Python中整数的缓存机制讲解
Feb 16 Python
Python数据分析模块pandas用法详解
Sep 04 Python
python创建子类的方法分析
Nov 28 Python
tensorflow实现在函数中用tf.Print输出中间值
Jan 21 Python
python IDLE添加行号显示教程
Apr 25 Python
浅谈keras2 predict和fit_generator的坑
Jun 17 Python
Python内存泄漏和内存溢出的解决方案
Sep 26 Python
python基于pygame实现飞机大作战小游戏
Nov 19 Python
python 利用 PIL 将数组值转成图片的实现
Apr 12 Python
python实现的web监控系统
Apr 27 Python
利用python和百度地图API实现数据地图标注的方法
May 13 #Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
May 13 #Python
为什么你还不懂得怎么使用Python协程
May 13 #Python
Python玩转加密的技巧【推荐】
May 13 #Python
11个Python3字典内置方法大全与示例汇总
May 13 #Python
python中的数据结构比较
May 13 #Python
Python中函数的基本定义与调用及内置函数详解
May 13 #Python
You might like
基于文本的搜索
2006/10/09 PHP
PHP extract 将数组拆分成多个变量的函数
2010/06/30 PHP
php将文本文件转换csv输出的方法
2014/12/31 PHP
PHP中使用CURL获取页面title例子
2015/01/07 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
PHP PDOStatement::fetchAll讲解
2019/01/31 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
js子页面获取父页面数据示例
2014/05/15 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
2018/10/11 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
vue 表单之通过v-model绑定单选按钮radio
2019/05/13 Javascript
Electron + vue 打包桌面操作流程详解
2019/06/24 Javascript
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
2019/08/01 Javascript
layui数据表格重载实现往后台传参
2019/11/15 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
vant自定义二级菜单操作
2020/11/02 Javascript
vue使用过滤器格式化日期
2021/01/20 Vue.js
浅析python递归函数和河内塔问题
2017/04/18 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
pytorch 转换矩阵的维数位置方法
2018/12/08 Python
基于Django实现日志记录报错信息
2019/12/17 Python
Django CSRF认证的几种解决方案
2020/03/03 Python
python能做哪方面的工作
2020/06/15 Python
django inspectdb 操作已有数据库数据的使用步骤
2021/02/07 Python
美国在线轮胎零售商:SimpleTire
2019/04/08 全球购物
数控技术专业毕业自荐书范文
2014/02/05 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
农民工预备党员思想汇报
2014/09/14 职场文书
南京市纪委监察局整改方案
2014/09/16 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
Pytorch实现图像识别之数字识别(附详细注释)
2021/05/11 Python