字體:小 中 大 | |
|
||||
2024/10/07 06:20:00瀏覽2110|回應0|推薦26 | ||||
颱風天居家無聊,上網路閒逛,無意間在 GitHub 發現這個 CaptchaSolver,用來自動解算所謂「驗證碼 Captcha」,方法挺有趣,實際在 JDownloader 2 試驗,也是管用的。記錄下來,萬一以後自己用得上😁。程式作者是 cracker0dks ,後面的方法說明大部份來自其文件,我只是摘要翻譯而已,詳情請看原文。 為不熟悉的朋友簡單做個背景介紹。 JDownloader 2 是個多用途檔案下載工具,可以用來下載包括油管影片在內的許多網路資源。「驗證碼 Captcha」則是用來防止非人類,換句話說就是自動化下載工具(例如 JD2),濫用網路資源的常見方法。許多免費網路空間,假如你不是付費會員的話,除了流量限制之外,也會利用「驗證碼 Captcha」來防堵程式自動下載。 「驗證碼 Captcha」是十分惱人的東西,為了防堵自動化程式,會花不少工夫把圖形弄得模糊錯亂,有時甚至肉眼難以辨識,真人都得嘗試錯誤兩三回。所以若有程式代勞,對懶惰的使用者其實也是福音。 以下圖片取自 CaptchaSolver 網站,但應該出自實際案例,沒什麼著作權問題,僅供參考。 案例一,相較於後面已經少見的案例三,算是對使用者友善的形式。你要回覆的,便是圖中隨機的六個英數字。對人類來說,困難處在於有時顏色太淡,或字形太過相似(如數字 1, 大寫的 i 和小寫的 L,1Il)而不易區分。對程式來說,頭一個麻煩是字體中空又有陰影,其次是大小不一、無基準線,有時更交錯、沾粘甚至重疊,最後是貫穿六個字的不規則曲線,都是針對傳統 OCR 的弱點進行干擾。相形之下,彩色不是問題,反而對使用者或程式都有助益。 原作者的對策是類神經網路,也就是今日很夯的 AI,很幸運地(原文: pure luck)找到那種特殊字型,得以寫程式產生如上圖的大量 Captchas 供訓練,產生特徵資料。如此一來可以避開上述對 OCR 而言的幾個嚴重障礙,取得實用成果。 當然,類神經網路是基於統計的猜測,原作者自稱正確率約 95%,但已經堪用。因為人眼不免出錯,即使答案不正確,網站通常會容許產生另一組驗證碼重新作答,最多有次數限制。 案例二,使用者要在下方十二個多邊形圖案中,找出與左上角相同者。看似不難,有時卻也因為顏色對比差(如上圖 7),難以辨識而出錯。對程式而言並不特別困難,麻煩主要在多邊形的大小、角度不一,此外因圖案過小而在邊緣產生鋸齒,不利於偵測。 原作者的對策:
案例三是最令人憎惡的驗證碼形式之一,別說我這老花眼,若是色弱或色盲,根本只有投降的份兒。難處很明顯,對人類和程式皆然:文字混在斑駁的噪訊和紊亂的線條中間,極難看清。原作者花不少篇幅解釋失敗的嘗試過程,姑且省略,只提最後解決多數案例的去噪方法。 原作者發現:
換句話說,找出與位於天地(上下方)相同顏色的點之後加以去除,文字就浮顯出來了。 然而此刻的文字、筆劃仍然處於分崩離析狀態,需要施以合適的演算法使之連綴,這部份複雜,直接看程式較快。完成後交給 OCR 處理,所幸單一字元旋轉幅度不大,大體能夠得到合理結果。 當然不可能百分之百正確,特別是文字沾天粘地的狀況,就徹底破功了。 最後是較為簡單、常見,也對使用者友善的案例。如上圖,相對突顯的黑色英數字,被外框包圍,背景有若干灰色雜點和線條,對 OCR 仍然具備一定程度的障礙,必須進行前處理。原作者仍然將試誤過程詳細講解,有興趣請慢慢看原文,這裡只摘錄重點步驟。
最後的最後,要放進 JD2 也很簡單,Windows 版直接下載(這裡) ,操作如下:
你的 JD2 並不會長得有什麼不同,只不過如果成功,原先需要人工輸入驗證碼的時機,就靜悄悄過去而已。不行的話請參看網站首頁 Trouble Shooting 部份。Mac 或 Linux 版本的安裝,比 Windows 複雜,也請自行參看。此外,目前版本只支援前兩種驗證碼,後兩種在舊版才有。 祝你使用愉快啦! |
||||
( 興趣嗜好|電腦3C ) |