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 ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
Jun 10 Python
python标准算法实现数组全排列的方法
Mar 17 Python
python获取本机外网ip的方法
Apr 15 Python
Python使用tablib生成excel文件的简单实现方法
Mar 16 Python
Python使用QRCode模块生成二维码实例详解
Jun 14 Python
python虚拟环境的安装配置图文教程
Oct 20 Python
Python实现E-Mail收集插件实例教程
Feb 06 Python
python将图片转base64,实现前端显示
Jan 09 Python
利用pandas向一个csv文件追加写入数据的实现示例
Apr 23 Python
Python参数传递对象的引用原理解析
May 22 Python
解决tensorflow读取本地MNITS_data失败的原因
Jun 22 Python
matplotlib之pyplot模块实现添加子图subplot的使用
Apr 25 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
PHP源码之explode使用说明
2011/08/05 PHP
探讨如何把session存入数据库
2013/06/07 PHP
php中filter_input函数用法分析
2014/11/15 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
2016/01/11 PHP
php实现给二维数组中所有一维数组添加值的方法
2017/02/04 PHP
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
jquery中常用的函数和属性详细解析
2014/03/07 Javascript
Angular ng-repeat 对象和数组遍历实例
2016/09/14 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
2016/11/16 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
Vue封装的组件全局注册并引用
2019/07/24 Javascript
Element-UI中关于table表格的那些骚操作(小结)
2019/08/15 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
从0开始的Python学习016异常
2019/04/08 Python
Python实现Restful API的例子
2019/08/31 Python
PHP统计代码行数的小代码
2019/09/19 Python
使用django和vue进行数据交互的方法步骤
2019/11/11 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
python 自动识别并连接串口的实现
2021/01/19 Python
师范大学毕业自我鉴定
2013/11/21 职场文书
十八大闭幕感言
2014/01/22 职场文书
酒店开业庆典策划方案
2014/05/28 职场文书
2014客服代表实习自我鉴定
2014/09/18 职场文书
办公室主任岗位职责范本
2015/03/31 职场文书
2015国庆66周年宣传语
2015/07/14 职场文书
小学体育组工作总结
2015/08/13 职场文书
关于感恩的歌曲整理(8首)
2019/08/14 职场文书
Navicat for MySQL的使用教程详解
2021/05/27 MySQL
Java Spring 控制反转(IOC)容器详解
2021/10/05 Java/Android
TaiShan 200服务器安装Ubuntu 18.04的图文教程
2022/06/28 Servers