機器之心編譯
每個人都討厭驗證碼,這些惱人的圖片中包含你必須輸入的字符,我們只有正確地填寫才能繼續訪問網站。驗證碼旨在確認訪問者是人還是程序,并防止惡意程序的入侵。然而,隨著深度學習和計算機視覺技術的發展,現在這些認證方法可以被我們輕松破解了。
在這一個項目中,作者破解了最新版的 ,并開源了所有代碼。不過項目作者聲明:「這份代碼能夠解決最新版的 ,但僅限于在自己網站上使用瀏覽網頁要輸入驗證碼,且僅用于教育目的。」
項目地址:
項目是由卡內基梅隆大學開始構建的系統,這個項目將從書本上掃描下來、無法被 OCR 準確識別的文字顯示在 問題中,從而判斷訪問者到底是程序還是人類。自 2014 年以來, 改為在「我不是機器人」(I'm not a robot)的方框中打勾,進而完成判別。
這個名為 的項目最早創建于 2017 年 4 月,并在當時實現了 85% 的 對抗率。不過后來谷歌發布了新版本的 ,且新版的 主要有以下兩個主要改進:
這些改進最開始成功地防御了第一版 的攻擊,然而到了 18 年 6 月份,這些挑戰基本都已被解決。本項目的作者同樣與 團隊取得了聯系,他們完全了解這次攻擊。此外, 團隊還允許該項目作者發布 的代碼,盡管它目前仍然能有效破解 驗證碼。
簡介
由于 添加了語音形式的驗證碼識別,破解 比以前變得更加容易。因為我們只需要調用一個免費的語音識別 API,對所有驗證碼的識別準確率就能達到 90% 左右。另外由于 會阻止瀏覽器自動化引擎 , 會使用屏幕點擊器()移動到屏幕上特定的像素,從而像人一樣瀏覽網頁。當然在模擬人類瀏覽的過程中,每一個新用戶的坐標都需要更新,這個目前并不是太魯棒。
的方法非常簡潔:
如下所示 的測試界面:
如何使用
因為 必須指定屏幕上的特定坐標,因此我們必須基于設置更新坐標。這些坐標更新的代碼寫在了 run.py 文件的最上面。在 Linux 系統中,使用命令行 —shell 可以定位鼠標在屏幕上的坐標位置。
我們還需要配置到底使用哪一個語音識別 API,國內的 BAT、訊飛和搜狗等都提供高效的語音識別 API,而國外的谷歌、微軟和 IBM 也一樣。谷歌、微軟和 IBM 的的 API 結構都已經在 .py 中,我們只需要配置用戶名和密碼就行了。如果你要使用谷歌 API,我們需要使用谷歌應用的證書參數配置環境變量 。
最后瀏覽網頁要輸入驗證碼,安裝剩下的依賴項就能愉快地破解了:pip -r .txt。