機器之心編譯git
每一個人都討厭驗證碼,這些惱人的圖片中包含你必須輸入的字符,咱們只有正確地填寫才能繼續訪問網站。驗證碼旨在確認訪問者是人仍是程序,並防止惡意程序的入侵。然而,隨着深度學習和計算機視覺技術的發展,如今這些認證方法能夠被咱們輕鬆破解了。github
在這一個項目中,做者破解了最新版的 ReCaptcha,並開源了全部代碼。不過項目做者聲明:「這份代碼可以解決最新版的 ReCaptcha,但僅限於在本身網站上使用,且僅用於教育目的。」面試
項目地址: https://github.com/ecthros/uncaptcha2shell
reCAPTCHA 項目是由卡內基梅隆大學開始構建的系統,這個項目將從書本上掃描下來、沒法被 OCR 準確識別的文字顯示在 CAPTCHA 問題中,從而判斷訪問者究竟是程序仍是人類。自 2014 年以來,reCAPTCHA 改成在「我不是機器人」(I'm not a robot)的方框中打勾,進而完成判別。瀏覽器
這個名爲 unCaptcha 的項目最先建立於 2017 年 4 月,並在當時實現了 85% 的 ReCaptcha 對抗率。不事後來谷歌發佈了新版本的 ReCaptcha,且新版的 ReCaptcha 主要有如下兩個主要改進:工具
更好的瀏覽器自動檢測使用短語語音而不是數字學習
這些改進最開始成功地防護了初版 unCaptcha 的攻擊,然而到了 18 年 6 月份,這些挑戰基本都已被解決。本項目的做者一樣與 ReCaptcha 團隊取得了聯繫,他們徹底瞭解此次攻擊。此外,ReCaptcha 團隊還容許該項目做者發佈 unCaptcha2 的代碼,儘管它目前仍然能有效破解 ReCaptcha 驗證碼。測試
unCaptcha2 簡介網站
因爲 ReCaptcha 添加了語音形式的驗證碼識別,破解 ReCaptcha 比之前變得更加容易。由於咱們只須要調用一個免費的語音識別 API,對全部驗證碼的識別準確率就能達到 90% 左右。另外因爲 ReCaptcha 會阻止瀏覽器自動化引擎 Selenium,unCaptcha2 會使用屏幕點擊器(clicker)移動到屏幕上特定的像素,從而像人同樣瀏覽網頁。固然在模擬人類瀏覽的過程當中,每個新用戶的座標都須要更新,這個目前並非太魯棒。命令行
unCaptcha2 的方法很是簡潔:
導航至谷歌的 ReCaptcha 演示網站導航至 ReCaptcha 的語音庫下載語音使用語音識別 API 識別語音解析 API 返回的參數和識別結果提交識別結果,判斷是否成功
以下所示 unCaptcha2 的測試界面:
如何使用 unCaptcha2
由於 unCaptcha2 必須指定屏幕上的特定座標,所以咱們必須基於設置更新座標。這些座標更新的代碼寫在了 run.py 文件的最上面。在 Linux 系統中,使用命令行 xdotool getmouselocation—shell 能夠定位鼠標在屏幕上的座標位置。
咱們還須要配置到底使用哪個語音識別 API,國內的 BAT、訊飛和搜狗等都提供高效的語音識別 API,而國外的谷歌、微軟和 IBM 也同樣。谷歌、微軟和 IBM 的的 API 結構都已經在 queryAPI.py 中,咱們只須要配置用戶名和密碼就好了。若是你要使用谷歌 API,咱們須要使用谷歌應用的證書參數配置環境變量 GOOGLE_APPLICATION_CREDENTIAL。
最後,安裝剩下的依賴項就能愉快地破解了:pip install -r dependencies.txt。
若是對技術開發比較感興趣,歡迎關注一塊兒交流和學習!