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删除nginx缓存文件示例(python文件操作)
Mar 26 Python
Python中几个比较常见的名词解释
Jul 04 Python
python文件操作相关知识点总结整理
Feb 22 Python
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 Python
Python多进程multiprocessing用法实例分析
Aug 18 Python
python模块之time模块(实例讲解)
Sep 13 Python
python整小时 整天时间戳获取算法示例
Feb 20 Python
使用Python将Mysql的查询数据导出到文件的方法
Feb 25 Python
python进程的状态、创建及使用方法详解
Dec 06 Python
python MultipartEncoder传输zip文件实例
Apr 07 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
May 25 Python
如何正确理解python装饰器
Jun 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
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
php实现的Cookies操作类实例
2014/09/24 PHP
浅析THINKPHP的addAll支持的最大数据量
2015/02/03 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
深入浅析PHP无限极分类的案例教程
2016/05/09 PHP
PHP进阶学习之垃圾回收机制详解
2019/06/18 PHP
javascript的函数
2007/01/31 Javascript
“不能执行已释放的Script代码”错误的原因及解决办法
2007/09/09 Javascript
JavaScript代码复用模式实例分析
2012/12/02 Javascript
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
JavaScript中的立即执行函数表达式介绍
2015/03/15 Javascript
JavaScript动态修改弹出窗口大小的方法
2015/04/06 Javascript
jquery checkbox无法用attr()二次勾选问题的解决方法
2016/07/22 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
2016/08/25 Javascript
js获取ip和地区
2017/03/10 Javascript
Vue2.X 通过AJAX动态更新数据
2018/07/17 Javascript
JS实现匀速与减速缓慢运动的动画效果封装示例
2018/08/27 Javascript
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
vue+elementui 对话框取消 表单验证重置示例
2019/10/29 Javascript
Python 正则表达式操作指南
2009/05/04 Python
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
Python 中的lambda函数介绍
2018/10/10 Python
Python实现DDos攻击实例详解
2019/02/02 Python
python基于event实现线程间通信控制
2020/01/13 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
matplotlib自定义鼠标光标坐标格式的实现
2021/01/08 Python
Scrapy实现模拟登录的示例代码
2021/02/21 Python
Order by的几种用法
2013/06/16 面试题
《秋游》教学反思
2014/04/24 职场文书
房屋租赁委托书范本
2014/10/04 职场文书
干货分享:推荐信写作技巧!
2019/06/21 职场文书
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript
多人盗宝《绿林侠盗》第三赛季4.5上线 跨平台实装
2022/04/03 其他游戏
pandas中pd.groupby()的用法详解
2022/06/16 Python