跳至主要内容

如何破解網站驗證碼,實測證交所買賣日報表

· 7 分鐘閱讀
Eric Cheng

寫網路爬蟲最討厭的事莫過於遇到網站需要驗證碼,去 google 「網站驗證碼 破解」也會看到一堆文章,無奈一大半都是從對岸翻譯的,很多都不能用,花了點時間實際用證交所買賣日報表的驗證碼來測試,簡單整理了一下筆記

工人智慧

你沒看錯我沒寫錯,真的是「工人智慧」,不是「人工智慧」

代表的網站有這兩間

它們的原理很簡單,就是用低價去人力成本低廉的地方找人來分辨驗證碼回傳賺取價差。

由網站提供介面和 API,客戶註冊後使用網站提供的 API 上傳需要破解的驗證碼,網站收到需求後分配給線上的工作人員,工作人員辨識完成後回傳。根據網站的說法,普通工作人員每月約能賺 100 美金左右,在印度、巴基斯坦..等國家已經算不錯的薪資了,而且只需要一台電腦或手機就能工作,還有工作人員的故事,其實我還蠻配服想到這個方法的人,也不算是剝削工作人員,只能說是各取所需吧

我有列入考慮,但最後沒真的去測試,不過相信辨識率應該不差,畢竟是真人辨識的,而且價格對我們而言不高,1000個驗證碼約為 0.5~1 美元,真的要用也在可以負擔的範圍能力內

列入考慮

Tesseract

tesseract 是 google 的 OCR 文字辨識,大概也是找到最多文章說能夠拿來破解驗證碼的方法

Python 有幾個 library,底層都是用 tesseract,像是

使用上需要先下載 tesseract,不過官方並沒有提供 windows 的安裝檔,如果需要在本機測試的話,要先到 3rd party找安裝檔,下載連結如下:下載連結

程式寫起來很簡單,我是測試 pytesseract,基本上就是用官網的 sample code 就可以了,但如果你的目的是證交所的買賣日報表的話,可以不用試了,我實測結果是無法辨識,不管是基本用法或是網路上其他的文章說的什麼 灰度處理、降噪,都沒有用,只能說買賣日報表的驗證碼做的還不差吧。畢竟 OCR 本來的目的就只是要做一般文字辨識,不是拿來辨識驗證碼的

測試失敗

Amazon Textract

Amazon Textract 是 AWS 提供的文字辨識工具,要使用的前提是要有 AWS 帳號,這個服務看官網說明是要收費的,但是我測試了 20筆資料,沒看到帳單有費用,但如果你的目的是證交所的買賣日報表的話,也可以不用試了,我實測結果 20筆資料,只辨識成功 1筆,辨識成功率 5%,不過好像也不能怪 AWS,畢竟這個工具和 OCR 一樣,本來就不是設計來辨識驗證碼的

測試失敗

Deep Learning | CNN

在測試前,我就認為這個應該是正解,畢竟如果連 CNN 都搞不定,大概就只能去用工人智慧了

不過網路上說什麼「十五分鐘實戰」,一堆對岸的文章看看就好,基本上用 Deep Learning 有一定的進入門檻在,如果沒學過怎麼用 AI 建模型,不要說十五分鐘,十五天都不一定學的會。為了破解個驗證碼,還要去學 CNN 好像 CP 值太低了點。

不過在這個套件當道的時候,應該有些好心人會封裝出好用的套件吧,然後我找到 ddddocr

ddddocr 帶帶弟弟OCR通用驗證碼識別SDK免費開源版

有點中二的名字,大陸人寫的,從說明來看,底層就是 deep learning,只是已經先幫我們建好模型了,同樣實測 20筆資料,成功了 14筆,辨識成功率 70%,雖然看起來不太高,但實務上我覺得夠用了,反正辨識失敗就再換個驗證碼再來一次就好

暫定使用

實測記錄

也只有 Amazon Textract 和 ddddocr

圖片Amazon Textractddddocr (1.3)
c-01N/AX8NFG
c-027U9kM7U9Kt
c-03m TOGRNLL
c-04LX24Plx24D
c-05N/A99UV
c-06N/AZ4N86
c-07RCRERCREC
c-08N/AK22PA
c-096KGCK6Kgc
c-10EHJ83EH
c-11N2R9N8
c-12Z:3KRFZ3KRF
c-138YRD98yrd
c-14N/A4YA7
c-156P.G6A2G
c-16PTGRPZGRZ
c-17APNHOAPNHG
c-18N/AY7JPJ
c-19DOQJDQQJ
c-20TKQHA7KQHA

加入fb粉絲團!第一時間取得網站更新訊息

版權聲明

,轉載請註明出處
本文連結: https://havocfuture.tw/blog/captcha-bsr