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重新引入被覆盖的自带function
Jul 16 Python
Python下使用Psyco模块优化运行速度
Apr 05 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
May 19 Python
unittest+coverage单元测试代码覆盖操作实例详解
Apr 04 Python
python实现excel读写数据
Mar 02 Python
Python 经典面试题 21 道【不可错过】
Sep 21 Python
python调用opencv实现猫脸检测功能
Jan 15 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
Jul 04 Python
python实现机器人卡牌
Oct 06 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
May 25 Python
浅谈django框架集成swagger以及自定义参数问题
Jul 07 Python
Pycharm中使用git进行合作开发的教程详解
Nov 17 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
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
一段php加密解密的代码
2007/07/16 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
JavaScript代码性能优化总结(推荐)
2016/05/16 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
2016/08/09 Javascript
jQuery中的siblings()是什么意思(推荐)
2016/12/29 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
2017/04/13 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
浅谈Koa服务限流方法实践
2017/10/23 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
2017/10/25 Javascript
使用nodeJs来安装less及编译less文件为css文件的方法
2017/11/20 NodeJs
[48:31]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第一场 2月2日
2021/03/11 DOTA
Python六大开源框架对比
2015/10/19 Python
python实现Floyd算法
2018/01/03 Python
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
python版本五子棋的实现代码
2018/12/11 Python
Python使用修饰器进行异常日志记录操作示例
2019/03/19 Python
详解python数据结构和算法
2019/04/18 Python
python如何基于redis实现ip代理池
2020/01/17 Python
解决Tensorflow 内存泄露问题
2020/02/05 Python
Python xlrd excel文件操作代码实例
2020/03/10 Python
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
2017/07/24 HTML / CSS
澳大利亚在线家具店:Luxo Living
2019/03/24 全球购物
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
大学生工作求职信
2014/06/23 职场文书
2014民事授权委托书范本
2014/09/29 职场文书
加强作风建设心得体会
2014/10/22 职场文书
医生见习报告范文
2014/11/03 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
Nginx解决前端访问资源跨域问题的方法详解
2021/03/31 Servers
四十九个javascript小知识实用技巧
2021/11/20 Javascript