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实现基本进制转换的方法
Jul 11 Python
Python实现动态图解析、合成与倒放
Jan 18 Python
wxPython实现窗口用图片做背景
Apr 25 Python
python矩阵的转置和逆转实例
Dec 12 Python
Python合并同一个文件夹下所有PDF文件的方法
Mar 11 Python
树莓派实现移动拍照
Jun 22 Python
python sklearn库实现简单逻辑回归的实例代码
Jul 01 Python
python issubclass 和 isinstance函数
Jul 25 Python
python写程序统计词频的方法
Jul 29 Python
pytorch 实现查看网络中的参数
Jan 06 Python
python烟花效果的代码实例
Feb 25 Python
Python 统计位数为偶数的数字代码详解
Mar 15 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 用sock技术发送邮件的函数
2007/07/21 PHP
PHP下判断网址是否有效的代码
2011/10/08 PHP
php获取四位字母和数字的随机数的实现方法
2015/01/09 PHP
php删除文本文件中重复行的方法
2015/04/28 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
javascript 函数声明与函数表达式的区别介绍
2013/10/05 Javascript
原生javascript实现图片按钮切换
2015/01/12 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
vue-dialog的弹出层组件
2020/05/25 Javascript
ES6扩展运算符用法实例分析
2017/10/31 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
2019/05/10 Javascript
基于Vue的商品主图放大镜方案详解
2019/09/19 Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
2020/04/21 Javascript
JavaScript eval()函数定义及使用方法详解
2020/07/07 Javascript
[00:38]TI珍贵瞬间系列(二):笑
2020/08/26 DOTA
简单介绍Ruby中的CGI编程
2015/04/10 Python
Python中的连接符(+、+=)示例详解
2017/01/13 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
python 获取当前目录下的文件目录和文件名实例代码详解
2020/03/10 Python
Django基于Models定制Admin后台实现过程解析
2020/11/11 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
I.T中国官网:精选时尚设计师单品网购平台
2018/03/26 全球购物
诺心蛋糕官网:LE CAKE
2018/08/25 全球购物
信息专业个人的自我评价
2013/12/27 职场文书
大学竞选班长演讲稿
2014/04/24 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
捐书活动倡议书
2015/04/27 职场文书
同学聚会开幕词
2019/04/02 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js
详解Python中的进程和线程
2021/06/23 Python