日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python打码API(学习使用)

發布時間:2023/12/20 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python打码API(学习使用) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

驗證碼處理
學習目標
了解 驗證碼的相關知識
掌握 圖片識別引擎的使用
了解 常見的打碼平臺
掌握 通過打碼平臺處理驗證碼的方法
1.圖片驗證碼
1.1 什么是圖片驗證碼

驗證碼(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自動區分計算機和人類的圖靈測試)的縮寫,是一種區分用戶是計算機還是人的公共全自動程序。
1.2 驗證碼的作用

防止惡意破解密碼、刷票、論壇灌水、刷頁。有效防止某個黑客對某一個特定注冊用戶用特定程序暴力破解方式進行不斷的登錄嘗試,實際上使用驗證碼是現在很多網站通行的方式(比如招商銀行的網上個人銀行,百度社區),我們利用比較簡易的方式實現了這個功能。雖然登錄麻煩一點,但是對網友的密碼安全來說這個功能還是很有必要,也很重要。
1.3 圖片驗證碼在爬蟲中的使用場景

注冊
登錄
頻繁發送請求時,服務器彈出驗證碼進行驗證
1.4 圖片驗證碼的處理方案

手動輸入(input)
這種方法僅限于登錄一次就可持續使用的情況
圖像識別引擎解析
使用光學識別引擎處理圖片中的數據,目前常用于圖片數據提取,較少用于驗證碼處理
打碼平臺
爬蟲常用的驗證碼解決方案
2.圖片識別引擎
OCR(Optical Character Recognition)是指使用掃描儀或數碼相機對文本資料進行掃描成圖像文件,然后對圖像文件進行分析處理,自動識別獲取文字信息及版面信息的軟件。
2.1 什么是tesseract
Tesseract,一款由HP實驗室開發由Google維護的開源OCR引擎,特點是開源,免費,支持多語言,多平臺。
項目地址:https://github.com/tesseract-ocr/tesseract
2.2 圖片識別引擎環境的安裝
1 引擎的安裝

mac環境下直接執行命令

windows環境下的安裝
可以通過exe安裝包安裝,下載地址可以從GitHub項目中的wiki找到。安裝完成后記得將Tesseract 執行文件的目錄加入到PATH中,方便后續調用。

linux環境下的安裝


2 Python庫的安裝
在pycharm下的terminal輸入下列代碼

2.3 圖片識別引擎的使用
通過pytesseract模塊的 image_to_string 方法就能將打開的圖片文件中的數據提取成字符串數據,具體方法如下

2.4 圖片識別引擎的使用擴展
tesseract簡單使用與訓練
其他ocr平臺


3 打碼平臺
1.為什么需要了解打碼平臺的使用
現在很多網站都會使用驗證碼來進行反爬,所以為了能夠更好的獲取數據,需要了解如何使用打碼平臺爬蟲中的驗證碼

2 常見的打碼平臺
云打碼:http://www.yundama.com/
能夠解決通用的驗證碼識別

極驗驗證碼智能識別輔助:http://jiyandoc.c2567.com/
能夠解決復雜驗證碼的識別

3 云打碼的使用
下面以云打碼為例,了解打碼平臺如何使用

3.1 云打碼官方接口
下面代碼是云打碼平臺提供,做了個簡單修改,實現了兩個方法:

indetify:傳入圖片的響應二進制數即可
indetify_by_filepath:傳入圖片的路徑即可識別
其中需要自己配置的地方是:

云打碼官方提供的api如下:
#yundama.py

import requests
import json
import time

class YDMHttp:
apiurl = ‘http://api.yundama.com/api.php’
username = ‘’
password = ‘’
appid = ‘’
appkey = ‘’

def __init__(self, username, password, appid, appkey):self.username = usernameself.password = passwordself.appid = str(appid)self.appkey = appkeydef request(self, fields, files=[]):response = self.post_url(self.apiurl, fields, files)response = json.loads(response)return responsedef balance(self):data = {'method': 'balance', 'username': self.username, 'password': self.password, 'appid': self.appid,'appkey': self.appkey}response = self.request(data)if (response):if (response['ret'] and response['ret'] < 0):return response['ret']else:return response['balance']else:return -9001def login(self):data = {'method': 'login', 'username': self.username, 'password': self.password, 'appid': self.appid,'appkey': self.appkey}response = self.request(data)if (response):if (response['ret'] and response['ret'] < 0):return response['ret']else:return response['uid']else:return -9001def upload(self, filename, codetype, timeout):data = {'method': 'upload', 'username': self.username, 'password': self.password, 'appid': self.appid,'appkey': self.appkey, 'codetype': str(codetype), 'timeout': str(timeout)}file = {'file': filename}response = self.request(data, file)if (response):if (response['ret'] and response['ret'] < 0):return response['ret']else:return response['cid']else:return -9001def result(self, cid):data = {'method': 'result', 'username': self.username, 'password': self.password, 'appid': self.appid,'appkey': self.appkey, 'cid': str(cid)}response = self.request(data)return response and response['text'] or ''def decode(self, filename, codetype, timeout):cid = self.upload(filename, codetype, timeout)if (cid > 0):for i in range(0, timeout):result = self.result(cid)if (result != ''):return cid, resultelse:time.sleep(1)return -3003, ''else:return cid, ''def post_url(self, url, fields, files=[]):# for key in files:# files[key] = open(files[key], 'rb');res = requests.post(url, files=files, data=fields)return res.text

username = ‘whoarewe’ # 用戶名

password = ‘***’ # 密碼

appid = 4283 # appid

appkey = ‘02074c64f0d0bb9efb2df455537b01c3’ # appkey

filename = ‘getimage.jpg’ # 文件位置

codetype = 1004 # 驗證碼類型

超時

timeout = 60

def indetify(response_content):
if (username == ‘username’):
print(‘請設置好相關參數再測試’)
else:
# 初始化
yundama = YDMHttp(username, password, appid, appkey)

# 登陸云打碼uid = yundama.login();print('uid: %s' % uid)# 查詢余額balance = yundama.balance();print('balance: %s' % balance)# 開始識別,圖片路徑,驗證碼類型ID,超時時間(秒),識別結果cid, result = yundama.decode(response_content, codetype, timeout)print('cid: %s, result: %s' % (cid, result))return result

def indetify_by_filepath(file_path):
if (username == ‘username’):
print(‘請設置好相關參數再測試’)
else:
# 初始化
yundama = YDMHttp(username, password, appid, appkey)

# 登陸云打碼uid = yundama.login();print('uid: %s' % uid)# 查詢余額balance = yundama.balance();print('balance: %s' % balance)# 開始識別,圖片路徑,驗證碼類型ID,超時時間(秒),識別結果cid, result = yundama.decode(file_path, codetype, timeout)print('cid: %s, result: %s' % (cid, result))return result

if name == ‘main’:
pass

4 常見的驗證碼的種類
4.1 url地址不變,驗證碼不變
這是驗證碼里面非常簡單的一種類型,對應的只需要獲取驗證碼的地址,然后請求,通過打碼平臺識別即可

4.2 url地址不變,驗證碼變化
這種驗證碼的類型是更加常見的一種類型,對于這種驗證碼,大家需要思考:

在登錄的過程中,假設我輸入的驗證碼是對的,對方服務器是如何判斷當前我輸入的驗證碼是顯示在我屏幕上的驗證碼,而不是其他的驗證碼呢?

在獲取網頁的時候,請求驗證碼,以及提交驗證碼的時候,對方服務器肯定通過了某種手段驗證我之前獲取的驗證碼和最后提交的驗證碼是同一個驗證碼,那這個手段是什么手段呢?

很明顯,就是通過cookie來實現的,所以對應的,在請求頁面,請求驗證碼,提交驗證碼的到時候需要保證cookie的一致性,對此可以使用requests.session來解決

總結

以上是生活随笔為你收集整理的Python打码API(学习使用)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久久久久久国产精品 | 成人片黄网站久久久免费 | 日本高清不卡在线 | 黑丝美女啪啪 | 日韩黄色高清视频 | 风韵少妇性饥渴推油按摩视频 | 不卡av在线播放 | 国产专区自拍 | 解开乳罩喂领导吃奶 | 在线aaa | 成人免费在线网址 | 五月天综合社区 | 天堂网av2014 | 影音先锋男人天堂 | 色一情一区二区三区四区 | 中文字幕一区二区在线观看 | a激情 | 国产又粗又黄又爽又硬 | 亚洲免费资源 | 午夜dv内射一区二区 | 久久视频一区二区 | 精品99久久久久成人网站免费 | 99热网站 | 亚洲午夜精品一区二区 | 男人天堂视频网站 | 欧美日韩一区二区三区视频 | 日本亚洲色大成网站www久久 | 国产精品视频一区二区三区 | 日韩精品理论 | 亚洲一区二区三区在线看 | 夜夜嗨av一区二区三区 | 午夜激情福利视频 | 国内偷拍精品视频 | 在线资源av | 黄色片a| 亚洲国产精品无码观看久久 | 啪啪免费 | 好看的中文字幕 | 人体私拍套图hdxxxx | 香蕉色综合 | 爱爱免费网址 | 国产探花视频在线观看 | 日韩在线视频中文字幕 | 亚洲中文字幕无码一区 | 国产aⅴ | 91红桃视频 | 国产福利91精品一区二区三区 | 午夜小视频在线播放 | 69亚洲| 国产香蕉精品视频 | 国产精品高清在线 | jizzjizzjizz亚洲女 | 久久久久久久久久久网 | 亚洲精品国产精品国自产 | 污视频免费看 | 欧美日韩一区二区三区国产精品成人 | 黄色三级视频在线观看 | 成人在线免费高清视频 | www黄色大片 | 国产在线专区 | 精品福利电影 | 性色av免费观看 | 成年人视频在线播放 | 一区在线播放 | 噼里啪啦动漫高清在线观看 | www.日本在线 | 你懂的网站在线 | 99热免费在线 | 用力抵着尿进去了h | 黑人一级女人全片 | 午夜av不卡 | 欧美成人xxx| 国产碰碰 | 国产拍拍拍拍拍拍拍拍拍拍拍拍拍 | 亚洲69av | 青青草手机视频 | 久久久久久久中文字幕 | 制服丝袜影音先锋 | 精品福利在线 | 欧美一区二区视频在线 | 老司机深夜视频 | 少女国产免费观看 | 亚洲品质自拍视频 | 小泽玛利亚一区二区三区在线观看 | 亚洲免费一级片 | 阿v天堂2018| 日韩欧美二区三区 | 无码一区二区三区在线 | 国产不卡视频 | 国产区在线观看 | 伊人网站 | 欧美图片一区 | www.亚洲欧美 | 日韩精品欧美 | 69精品在线观看 | 色姐| 成人一区二区在线 | 丰满人妻老熟妇伦人精品 | 一级激情片 |