1. import http.client, mimetypes, urllib, json, time, requests
  2. ######################################################################
  3.  
  4. class YDMHttp:
  5. apiurl = 'http://api.yundama.com/api.php'
  6. username = ''
  7. password = ''
  8. appid = ''
  9. appkey = ''
  10.  
  11. def __init__(self, username, password, appid, appkey):
  12. self.username = username
  13. self.password = password
  14. self.appid = str(appid)
  15. self.appkey = appkey
  16.  
  17. def request(self, fields, files=[]):
  18. response = self.post_url(self.apiurl, fields, files)
  19. response = json.loads(response)
  20. return response
  21.  
  22. def balance(self):
  23. data = {'method': 'balance', 'username': self.username, 'password': self.password, 'appid': self.appid,
  24. 'appkey': self.appkey}
  25. response = self.request(data)
  26. if (response):
  27. if (response['ret'] and response['ret'] < 0):
  28. return response['ret']
  29. else:
  30. return response['balance']
  31. else:
  32. return -9001
  33.  
  34. def login(self):
  35. data = {'method': 'login', 'username': self.username, 'password': self.password, 'appid': self.appid,
  36. 'appkey': self.appkey}
  37. response = self.request(data)
  38. if (response):
  39. if (response['ret'] and response['ret'] < 0):
  40. return response['ret']
  41. else:
  42. return response['uid']
  43. else:
  44. return -9001
  45.  
  46. def upload(self, filename, codetype, timeout):
  47. data = {'method': 'upload', 'username': self.username, 'password': self.password, 'appid': self.appid,
  48. 'appkey': self.appkey, 'codetype': str(codetype), 'timeout': str(timeout)}
  49. file = {'file': filename}
  50. response = self.request(data, file)
  51. if (response):
  52. if (response['ret'] and response['ret'] < 0):
  53. return response['ret']
  54. else:
  55. return response['cid']
  56. else:
  57. return -9001
  58.  
  59. def result(self, cid):
  60. data = {'method': 'result', 'username': self.username, 'password': self.password, 'appid': self.appid,
  61. 'appkey': self.appkey, 'cid': str(cid)}
  62. response = self.request(data)
  63. return response and response['text'] or ''
  64.  
  65. def decode(self, filename, codetype, timeout):
  66. cid = self.upload(filename, codetype, timeout)
  67. if (cid > 0):
  68. for i in range(0, timeout):
  69. result = self.result(cid)
  70. if (result != ''):
  71. return cid, result
  72. else:
  73. time.sleep(1)
  74. return -3003, ''
  75. else:
  76. return cid, ''
  77.  
  78. def report(self, cid):
  79. data = {'method': 'report', 'username': self.username, 'password': self.password, 'appid': self.appid,
  80. 'appkey': self.appkey, 'cid': str(cid), 'flag': ''}
  81. response = self.request(data)
  82. if (response):
  83. return response['ret']
  84. else:
  85. return -9001
  86.  
  87. def post_url(self, url, fields, files=[]):
  88. for key in files:
  89. files[key] = open(files[key], 'rb');
  90. res = requests.post(url, files=files, data=fields)
  91. return res.text
  92.  
  93. def code(IMG_URL):
  94. ######################################################################
  95.  
  96. # 用户名
  97. username = ''
  98.  
  99. # 密码
  100. password = ''
  101. # 软件ID,开发者分成必要参数。登录开发者后台【我的软件】获得!
  102. appid = 1
  103.  
  104. # 软件密钥,开发者分成必要参数。登录开发者后台【我的软件】获得!
  105. appkey = '22cc5376925e9387a23cf797cb9ba745'
  106.  
  107. # 图片文件
  108. filename = IMG_URL
  109.  
  110. # 验证码类型,# 例:1004表示4位字母数字,不同类型收费不同。请准确填写,否则影响识别率。在此查询所有类型 http://www.yundama.com/price.html
  111. codetype = 1004
  112.  
  113. # 超时时间,秒
  114. timeout = 60
  115.  
  116. # 检查
  117. if (username == 'username'):
  118. print('请设置好相关参数再测试')
  119. else:
  120. # 初始化
  121. yundama = YDMHttp(username, password, appid, appkey)
  122.  
  123. # 登陆云打码
  124. uid = yundama.login();
  125. # print('uid: %s' % uid)
  126.  
  127. # 查询余额
  128. balance = yundama.balance();
  129. print('balance: %s' % balance)
  130.  
  131. # 开始识别,图片路径,验证码类型ID,超时时间(秒),识别结果
  132. cid, result = yundama.decode(filename, codetype, timeout);
  133. print('cid: %s, result: %s' % (cid, result))
  134. return result
  135.  
  136. ######################################################################

python 云打码 hhtp接口的更多相关文章

  1. python 云打码 http接口

    import http.client, mimetypes, urllib, json, time, requests ######################################## ...

  2. requests利用selenium,代理Ip,云打码,验证码抠图操作 爬取搜狗微信公众号内容

    爬取思路,爬取搜狗微信公众号内容,爬取第一层url时请求太快出现验证码,我这里用的蘑菇云代理,并在程序中我判断什么情况下是否+代理,做到合理运用代理ip.爬取第二层url时验证码出现次数更严重(和第一 ...

  3. 接口自动化 [授客]基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0

    基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0   by:授客 QQ:1033553122     博客:http://blog.sina.com.cn/ishou ...

  4. 基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0

    基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0 目录 1. 开发环境2. 主要功能逻辑介绍3. 框架功能简介 4. 数据库的创建 5. 框架模块详细介绍6. Tes ...

  5. Python——Requests库的开发者接口

    本文介绍 Python Requests 库的开发者接口,主要内容包括: 目录 一.主要接口 1. requests.request() 2. requests.head().get().post() ...

  6. 《python解释器源码剖析》第11章--python虚拟机中的控制流

    11.0 序 在上一章中,我们剖析了python虚拟机中的一般表达式的实现.在剖析一遍表达式是我们的流程都是从上往下顺序执行的,在执行的过程中没有任何变化.但是显然这是不够的,因为怎么能没有流程控制呢 ...

  7. 《python解释器源码剖析》第8章--python的字节码与pyc文件

    8.0 序 我们日常会写各种各样的python脚本,在运行的时候只需要输入python xxx.py程序就执行了.那么问题就来了,一个py文件是如何被python变成一系列的机器指令并执行的呢? 8. ...

  8. 《python解释器源码剖析》第0章--python的架构与编译python

    本系列是以陈儒先生的<python源码剖析>为学习素材,所记录的学习内容.不同的是陈儒先生的<python源码剖析>所剖析的是python2.5,本系列对应的是python3. ...

  9. Python+Pytest+Allure+Git+Jenkins接口自动化框架

    Python+Pytest+Allure+Git+Jenkins接口自动化框架 一.接口基础 接口测试是对系统和组件之间的接口进行测试,主要是效验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系. ...

随机推荐

  1. Eclipse项目中web app libraries和 Referenced Libraries区别

    Referenced  Libraries是编译环境下使用的JAR包,所谓编译环境下使用的JAR包, 就是说你在Eclipse中进行源文件的编写的时候,所需要引用到的类都从Referenced  Li ...

  2. Java基础学习笔记二十二 网络编程

    络通信协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样.在计算机网络中,这些连接和通信的规则 ...

  3. 记录python接口自动化测试--从excel中读取params参数传入requests请求不生效问题的解决过程(第七目)

    在第六目把主函数写好了,先来运行一下主函数 从截图中可以看到,请求参数打印出来了,和excel中填写的一致 但是每个接口的返回值却都是400,提示参数没有传进去,开始不知道是什么原因(因为excel中 ...

  4. android数据库持久化框架, ormlite框架,

    前言 Android中内置了SQLite,但是对于数据库操作这块,非常的麻烦.其实可以试用第3方的数据库持久化框架对之进行结构上调整, 摆脱了访问数据库操作的细节,不用再去写复杂的SQL语句.虽然这样 ...

  5. DELL EqualLogic PS存储硬盘故障数据恢复成功案例分享

    DELL EqualLogic PS4000采用虚拟ISCSI SAN阵列,为远程或分支办公室.部门和中小企业存储部署带来企业级功能.智能化.自动化和可靠性.以简化的管理.快速的部署及合理的价格满足了 ...

  6. JAVA_SE基础——42.final修饰符

    高手勿喷~ final关键字可用于修饰类.变量和方法,它有"这是无法改变的"或者"最终"的含义,因此被final修饰的类.变量和方法将具有以下特征: 1.fin ...

  7. JAVA_SE基础——36.static的实际应用

    什么时候定义静态函数 如果功能内部没有访问到非静态数据(对象的特有数据.那么该功能就可以定义为静态) P.S. 静态方法作为类和接口的重要组成部分,可以通过类名或接口直接访问,通常将那些使用频率较高的 ...

  8. LR之error(一)

    1 录制时频繁卡死的解决方案 添加数据保护 路径:计算机--高级系统设置(环境变量设置的上级窗口)--高级--设置--数据执行保护 更改LR录制设置,将run-time setting的brower改 ...

  9. [扩展推荐] —— Laravel Log 增强

    Laravel Log Enhancer 是 Laravel 5.6  的一个扩展包,可以在 Laravel 日志中添加额外的数据. 得益于 Laravel 5.6 中日志的更新,这个包利用这些特性扩 ...

  10. window.open()参数详解及对浏览器的兼容性

    因为篇幅,window.open()浏览器的兼容性请点击 这里 Part1:参数详解 window.open(url,name,param) url:即将打开的子窗口的地址:比如 "http ...