python打码网站的使用

打码网站的介绍
现在还有一种在线验证码识别的网站。他们雇佣了很多失业者和残疾人来人肉识别验证码,一般十个验证码一分钱左右。我们可以使用这种网站提供的接口来帮助我们识别验证码。这种方式理论上可以识别任何使用输入方式来验证的验证码。

这种打码网站的流程一般是这样的:

  • 将验证码上传到网站服务器
  • 网站服务器将验证码分发给打码工人
  • 打码工人肉眼识别验证码并上传结果
  • 网站将结果返回给我们
  • 整个流程走完,在网速良好的白天一般在3-4秒钟,在晚上大概8-10秒钟。
  • 使用在线打码
    大家在百度或者谷歌上面搜索:“验证码在线识别”,就可以找到很多提供在线打码的网站。但是由于一般这种打码网站是需要交费才能使用的,所以请一定要注意财产安全!

    在这文章里面,我们使用一个叫做云打码的网站来进行测试。网站地址为:http://www.yundama.com/。注册账号以后,需要交费购买“题分”才能正常使用。大家充1元钱就可以了。千万别多充,因为这个网站看起来快要倒闭了,很多文档都没有更新,他们给出的API也有些问题。

    这个网站虽然提供了各种语言的SDK,但是版本都比较旧了,所以我推荐大家使用他的HTTP接口:http://www.yundama.com/download/YDMHttp.html

    这个页面上给出了上传的地址。大家不要去看它提供的“PythonHTTP调用示例”,因为这个示例有问题。

    经过我的研究,它的HTTP接口的正确使用步骤如下:

  • 使用POST方式上传图片,并接收返回信息。上传的网址为:http://api.yundama.com/api.php?method=upload 上传参数请看下面的示例。
  • 运气和网速足够好的时候,立刻就可以从返回的信息中得到验证码。如果返回的数据没有验证码,转步骤3.
  • 获取cid, 并使用GET方式反复访问http://api.yundama.com/api.php?cid=在这里输入你获取到的cid&method=result 直到获取到验证码为止
  • 我这里给出一个正确的使用方式的代码片段:

    captcha_username = 'kingname' #打码网站用户名
    captcha_password = '1234567'  #打码网站密码
    captcha_appid = 1
    captcha_appkey = '22cc5376925e9387a23cf797cb9ba745'
    captcha_codetype = '1004'
    captcha_url = 'http://api.yundama.com/api.php?method=upload'
    captcha_result_url = 'http://api.yundama.com/api.php?cid={}&method=result'
    filename = '1.png'
    timeout = 15
    
    data = {'method': 'upload', 'username': captcha_username, 'password': captcha_password, 'appid': captcha_appid, 'appkey': captcha_appkey, 'codetype': captcha_codetype, 'timeout': '60'}
    f = open(filename, 'rb')
    file = {'file': f}
    response = requests.post(captcha_url, data, files=file).text
    f.close()
    response_dict = json.loads(response)
    '''如果验证码比较简单,或者是白天,这里直接就可以拿到结果'''
    result = response_dict['text']
    
    '''如果验证码比较难以识别或者是深夜,需要等待网站的返回结果'''
    if not result:
      cid = response_dict['cid']
      while timeout > 0:
          response = requests.get(captcha_result_url.format(cid)).text
          response_dict = json.loads(response)
          print(response_dict, '——还剩:{}秒...'.format(timeout))
          captcha = response_dict['text']
          if response_dict['text']:
              print('验证码是: {}'.format(captcha))
              break
          time.sleep(1)
          timeout -= 1
    

    发表评论

    电子邮件地址不会被公开。