如何破解並繞過網頁上常見的Captcha驗證?以2Captcha API為例
2Captcha是一個非常強大的CAPTCHA辨識服務。在我們日常生活當中,如果要登入網站(如:AWS的帳戶登入頁面),可能就會遇到需要手動輸入驗證碼的視窗,有些可能單純只是英文及數字的組合。但是有些卻極度複雜,扭曲的字體及顏色,常常讓使用者感到困擾。
各種不同類型的 Captcha
2Captcha API可以解決各種千奇百怪的Captcha,如下圖所示。最簡單的文字及英文不用說,甚至是回答今天星期幾、轉動圖片成指定方向、拖動圖片、進行圖片拼圖分類都能達成,相當好用。
官方部落格
官方API文檔說明
官方Youtube教學頻道
安裝套件
pip3 install 2captcha-python
使用方式
2Captcha API支援多種不同的程式語言。如:Python、PHP、JavaScript、GO、C#以及Ruby。本文會以Python為例:
申請API的連結:https://2captcha.com/auth/register
申請完後會取得API Key,請把這組Key記下來,待會會使用到,用來建立solver
# 在安裝2captcha後,我們必須到官方網站註冊帳號並申請API
# 下方的YOUR_API_KEY就是需要填入API Key的地方from twocaptcha import TwoCaptcha
solver = TwoCaptcha('YOUR_API_KEY')
除此之外,也可以設定更細節的參數
config = {
'server': '2captcha.com',
'apiKey': 'YOUR_API_KEY',
'softId': 123,
'callback': 'https://your.site/result-receiver',
'defaultTimeout': 120,
'recaptchaTimeout': 600,
'pollingInterval': 10,
}
solver = TwoCaptcha(**config)
我們來看看要如何使用2captcha解決驗證碼?
如果只是一般包含文字及英文的圖片,還蠻簡單的,只要使用solver.normal(‘圖片位置’)這個function,就能解決驗證碼。如果是文字性的問題,例如「假如明天是星期六,那今天會是星期幾呢?,則是透過solver.text(‘文字問題’)進行解決
result = solver.normal('path/to/captcha.jpg', param1=..., ...)result = solver.text('If tomorrow is Saturday, what day is today?', param1=..., ...)
官方Demo
import sys
import ossys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))from twocaptcha import TwoCaptchaapi_key = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY')solver = TwoCaptcha(api_key)try:
result = solver.normal('path/to/captcha.jpg')except Exception as e:
sys.exit(e)else:
sys.exit('solved: ' + str(result)) # result為獲得的文字結果,當我們取得文字之後呢,就可以做後續應用。例如使用Selenium的時候,遇到驗證碼問題就可以使用程式填入這個result。
費用
2captcha這樣的服務相當厲害,主要是應用人工的方式解決問題,也因此,我們除了能夠解決驗證碼之外,我們也能在2captcha這個平台上幫忙解決驗證問題,也能透過這樣的方式賺錢,取得額外收入。
結論
如果想知道如何破解captcha、想知道如何繞過captcha及recaptcha驗證、或是說在網頁爬蟲中繞過captcha的限制,2Captcha所提供的API,將會是一個相當便利的服務。可以解決目前我們實務爬蟲上,會遇到的種種困難。
如果想要與現有Python程式爬蟲結合的話,可以參考我過去寫的系列文章
只要透過2CaptchaAPI就能夠很輕易的解決爬蟲遇到的驗證碼問題,讓我們的程式能夠順利運行。
Python爬蟲學習筆記(一) — Requests, BeautifulSoup, 正規表達式
Python爬蟲學習筆記(二) — Selenium自動化+Katalon Recorder
Python爬蟲學習筆記(五) — 使用newspaper3k進行新聞爬蟲