Python 通過打碼平臺(tái)實(shí)現(xiàn)驗(yàn)證碼的實(shí)現(xiàn)
在爬蟲時(shí),經(jīng)常遇到登錄需要驗(yàn)證碼的情況,簡(jiǎn)單的驗(yàn)證碼可以自己解決,復(fù)制的驗(yàn)證碼需要借助機(jī)器學(xué)習(xí),有一定的難度。還有一個(gè)簡(jiǎn)單的方案就是采用付費(fèi)的打碼平臺(tái)。
比如R若快(http://www.ruokuai.com/client),還有云打碼平臺(tái)(http://www.yundama.com/price.html)
下面以R若快為例介紹打碼平臺(tái)的思路:
R若快平臺(tái)需要注冊(cè)兩個(gè)用戶,一個(gè)是普通用戶,一個(gè)開發(fā)者用戶,




1、首先驗(yàn)證碼截圖,就是截取網(wǎng)站上登錄頁(yè)面的驗(yàn)證碼圖片并保存到本地
2、調(diào)用打碼平臺(tái)的接口把驗(yàn)證碼圖片發(fā)送到打碼平臺(tái)并獲取到驗(yàn)證碼結(jié)果。
具體代碼如下:
#!/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: 圖片字節(jié)
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:報(bào)錯(cuò)題目的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'])
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python爬蟲模擬登錄帶驗(yàn)證碼網(wǎng)站
- python實(shí)現(xiàn)發(fā)送和獲取手機(jī)短信驗(yàn)證碼
- python驗(yàn)證碼識(shí)別的實(shí)例詳解
- Python爬蟲爬驗(yàn)證碼實(shí)現(xiàn)功能詳解
- SpringBoot優(yōu)化啟動(dòng)速度的方法實(shí)現(xiàn)
- python 圖片驗(yàn)證碼代碼
- 利用Python破解驗(yàn)證碼實(shí)例詳解
- Python驗(yàn)證碼識(shí)別處理實(shí)例
- Python生成隨機(jī)驗(yàn)證碼的兩種方法
- 詳解Python驗(yàn)證碼識(shí)別
- Python隨機(jī)生成一個(gè)6位的驗(yàn)證碼代碼分享
- Python生成驗(yàn)證碼實(shí)例
- Python實(shí)現(xiàn)破解12306圖片驗(yàn)證碼的方法分析
相關(guān)文章
Python多進(jìn)程并發(fā)與同步機(jī)制超詳細(xì)講解
進(jìn)程(Process),顧名思義,就是進(jìn)行中的程序。有一句話說得好:程序是一個(gè)沒有生命的實(shí)體,只有處理器賦予程序生命時(shí),它才能成為一個(gè)活動(dòng)的實(shí)體。進(jìn)程是資源分配的最小單元,也就是說每個(gè)進(jìn)程都有其單獨(dú)的內(nèi)存空間2022-12-12
學(xué)習(xí)Django知識(shí)點(diǎn)分享
在本篇文章里小編給大家整理的是關(guān)于學(xué)習(xí)Django的一些心得知識(shí)點(diǎn),對(duì)此有興趣的朋友們可以參考下。2019-09-09
Python利用Rasa框架和SMTPlib庫(kù)實(shí)現(xiàn)郵件回復(fù)助手
在現(xiàn)代辦公場(chǎng)景中,處理大量郵件是一項(xiàng)既耗時(shí)又容易出錯(cuò)的任務(wù),本文將詳細(xì)介紹如何使用Python的Rasa框架和SMTPlib庫(kù)建一個(gè)智能的郵件自動(dòng)回復(fù)助手,感興趣的可以了解下2025-04-04
Python?中?threading.Thread.join()?的使用方法示例詳解
threading.Thread.join()用于阻塞當(dāng)前線程,直到調(diào)用它的線程對(duì)象執(zhí)行完成或者超時(shí),在Python中,想要充分利用多線程的優(yōu)勢(shì),就需要對(duì)threading模塊中的 Thread 類了解,這里有一個(gè)非常簡(jiǎn)單的多線程程序,幫助理解 threading.Thread.join 方法,感興趣的朋友跟隨小編一起看看吧2024-06-06
Yolov5(v5.0)+pyqt5界面設(shè)計(jì)圖文教程
眾所周知界面設(shè)計(jì)一般指UI設(shè)計(jì),下面這篇文章主要給大家介紹了關(guān)于Yolov5(v5.0)+pyqt5界面設(shè)計(jì)的相關(guān)資料,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
python函數(shù)參數(shù),名稱空間,以及函數(shù)嵌套
這篇文章主要給大家介紹python函數(shù)參數(shù)、名稱空間、以及函數(shù)嵌套的相關(guān)資料,想具體了解的小伙伴請(qǐng)和小編一起進(jìn)入下面文章內(nèi)容吧2021-10-10

