打码平台的对接
驗證碼打碼平臺的對接。
1、打碼平臺的配置。
#!/usr/bin/env python # coding:utf-8import requests from hashlib import md5 import shandong_configclass Chaojiying_Client(object):def __init__(self, username, password, soft_id):self.username = usernamepassword = password.encode('utf-8')self.password = md5(password).hexdigest()self.soft_id = soft_idself.base_params = {'user': self.username,'pass2': self.password,'softid': self.soft_id,}self.headers = {'Connection': 'Keep-Alive','User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',}def PostPic(self, im, codetype):"""im: 圖片字節codetype: 題目類型 參考 http://www.chaojiying.com/price.html"""params = {'codetype': codetype,}params.update(self.base_params)files = {'userfile': ('ccc.jpg', im)}r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files, headers=self.headers)return r.json()def ReportError(self, im_id):"""im_id:報錯題目的圖片ID"""params = {'id': im_id,}params.update(self.base_params)r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)return r.json()def get_code(filename, code_type):'''獲取驗證碼結果:param img_path: 圖片路徑,可以是相對路徑或絕對路徑:param code_type: 驗證碼類型,詳情可見:http://www.chaojiying.com/price.html:return:'''chaojiying = Chaojiying_Client(shandong_config.DAMA_USERNAME, shandong_config.DAMA_PASSWORD, shandong_config.DAMA_TOKEN)im = open(filename, 'rb').read() #本地圖片文件路徑 來替換 a.jpg 有時WIN系統須要//code = chaojiying.PostPic(im, code_type)['pic_str'] #1902 驗證碼類型 官方網站>>價格體系 3.4+版 print 后要加()return code2、驗證碼的獲取。
# 驗證碼 self.browser.save_screenshot('./image/shandong/printscreen.png') imgelement = self.browser.find_element_by_id('image') location = imgelement.location # 獲取驗證碼x,y軸坐標 size = imgelement.size # 獲取驗證碼的長寬 rangle = (int(location['x']), int(location['y']), int(location['x'] + size['width']),int(location['y'] + size['height'])) # 寫成我們需要截取的位置坐標 i = Image.open("./image/shandong/printscreen.png") # 打開截圖 frame4 = i.crop(rangle) # 使用Image的crop函數,從截圖中再次截取我們需要的區域 frame4.save('./image/shandong/save.png') # 保存我們接下來的驗證碼圖片 進行打碼3.對接。
element = self.wait.until(EC.presence_of_element_located((By.ID, 'verifyCode'))) element.send_keys(get_code('./image/shandong/save.png',1902))總結
- 上一篇: 换脸上阵的路由界新面孔,联想云路由动手玩
- 下一篇: 简单菜谱