1. 程式人生 > >若快打碼平臺python開發文檔修改版

若快打碼平臺python開發文檔修改版

iges 加密 con 思想 type 開發文檔 () nec http

一、打碼的作用

  在進行爬蟲過程中,部分網站的登錄驗證碼是比較簡單的,例如四個英文數字隨機組合而成的驗證碼,有的是全數字隨機組成的驗證碼,有的是全中文隨機組成的驗證碼。為了爬蟲進行自動化,需要解決自動登錄的問題,而驗證碼問題成了第一道坎。起初想到用百度AI的圖像識別技術進行識別,但識別結果卻很差,最後還是想起用打碼平臺來解決吧。打碼平臺的識別率算起來還是比較高的,所有花錢還是能辦事的。

二、若快打碼原python開發文檔

  在若快官網下載的python文檔我覺得寫得過於臃腫,但開發思想(面向對象編程)還是值得肯定的,但有時候能簡即簡,畢竟我們只是為了獲取識別結果而已。原開發文檔代碼如下:

 1 #!/usr/bin/env python
 2 # coding:utf-8
 3 
 4 import requests
 5 from hashlib import md5
 6 
 7 
 8 class RClient(object):
 9 
10     def __init__(self, username, password, soft_id, soft_key):
11         self.username = username
12         self.password = md5(password.encode(utf-8).hexdigest()
13 self.soft_id = soft_id 14 self.soft_key = soft_key 15 self.base_params = { 16 username: self.username, 17 password: self.password, 18 softid: self.soft_id, 19 softkey: self.soft_key, 20 } 21 self.headers = {
22 Connection: Keep-Alive, 23 Expect: 100-continue, 24 User-Agent: ben, 25 } 26 27 def rk_create(self, im, im_type, timeout=60): 28 """ 29 im: 圖片字節 30 im_type: 題目類型 31 """ 32 params = { 33 typeid: im_type, 34 timeout: timeout, 35 } 36 params.update(self.base_params) 37 files = {image: (a.jpg, im)} 38 r = requests.post(http://api.ruokuai.com/create.json, data=params, files=files, headers=self.headers) 39 return r.json() 40 41 def rk_report_error(self, im_id): 42 """ 43 im_id:報錯題目的ID 44 """ 45 params = { 46 id: im_id, 47 } 48 params.update(self.base_params) 49 r = requests.post(http://api.ruokuai.com/reporterror.json, data=params, headers=self.headers) 50 return r.json() 51 52 53 if __name__ == __main__: 54 rc = RClient(普通用戶賬號, 普通用戶賬號密碼, 軟件ID, 軟件key) 55 im = open(a.jpg, rb).read() 56 print(rc.rk_create(im, 3040)[Result])

下載他們的開發文檔代碼後研讀了一遍發現還有錯誤的,就是在進行用戶密碼md5加密時候竟然沒有二進制化!!!罷了,可能是壓根就沒測這文檔,自己弄吧還是。。。

三、官方文檔修改版

  官方文檔寫的真是太難受了,最後還是修改一下,代碼如下:

# !/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
from hashlib import md5


def get_code_text(file_name, img_type):
    """
    獲取驗證碼
    :param file_name: 驗證碼本地圖片的路徑
    :param img_type: 要識別的驗證碼類型
    :return: 識別後的驗證碼
    """

    headers = {
        Connection: Keep-Alive,
        Expect: 100-continue,
        User-Agent: ben,
    }
    params = {
        username: 普通用戶賬號,
        password: md5(普通用戶賬號密碼.encode(utf8)).hexdigest(),
        softid: 120055,
        softkey: 6b4977398eb94ddeb0f733e18982042f,
        typeid: img_type,
        timeout: 30,
    }
    with open(file_name, rb) as f:
        content = f.read()
    files = {image: (file_name, content)}
    res = requests.post(http://api.ruokuai.com/create.json, data=params,
                        files=files, headers=headers)
    return res.json()[Result]

若快打碼平臺python開發文檔修改版