您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“如何去除圖片驗(yàn)證碼”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“如何去除圖片驗(yàn)證碼”吧!
全自動(dòng)區(qū)分計(jì)算機(jī)和人類的圖靈測(cè)試(Completely Automated Public Turing test to tell Computers and HumansApart,簡(jiǎn)稱CAPTCHA),俗稱驗(yàn)證碼,是一種區(qū)分用戶是計(jì)算機(jī)或人的全自動(dòng)化程序。
標(biāo)準(zhǔn)驗(yàn)證碼
標(biāo)準(zhǔn)驗(yàn)證碼即是我們常見的圖形驗(yàn)證碼、語音驗(yàn)證碼,基于機(jī)器難以處理復(fù)雜的計(jì)算機(jī)視覺及語音識(shí)別問題,而人類卻可以輕松的識(shí)別來區(qū)分人類及機(jī)器。
創(chuàng)新驗(yàn)證碼
創(chuàng)新驗(yàn)證碼是基于第一代驗(yàn)證碼的核心思想(通過人類知識(shí)可以解答,而計(jì)算機(jī)難以解答的問題進(jìn)行人機(jī)判斷)而產(chǎn)生的創(chuàng)新的交互優(yōu)化型驗(yàn)證碼。第二代驗(yàn)證碼基于第一代驗(yàn)證碼的核心原理:“人機(jī)之間知識(shí)的差異”,拓展出大量創(chuàng)新型驗(yàn)證碼。
無知識(shí)型驗(yàn)證碼
無知識(shí)型驗(yàn)證碼最大的特點(diǎn)是不再基于知識(shí)進(jìn)行人機(jī)判斷,而是基于人類固有的生物特征以及操作的環(huán)境信息綜合決策,來判斷是人類還是機(jī)器。如Google的ReCaptcha。
(1)避免觸發(fā)驗(yàn)證碼驗(yàn)證碼的引入會(huì)帶來用戶友好度的下降,增加驗(yàn)證碼輸入以及人眼對(duì)驗(yàn)證碼識(shí)別的可能錯(cuò)誤等都會(huì)帶來不好的使用體驗(yàn)。這對(duì)追求用戶體驗(yàn)的網(wǎng)站來說,在沒遇到可疑行為時(shí),其采取的策略是默認(rèn)不開啟驗(yàn)證碼功能,當(dāng)觸發(fā)可疑行為識(shí)別規(guī)則時(shí),才會(huì)出現(xiàn)驗(yàn)證碼?;诖嗽恚瑢?duì)攻擊方來說,就是盡量避免觸發(fā)可能出現(xiàn)驗(yàn)證碼的規(guī)則。一般可疑行為識(shí)別是通過檢查頻繁嘗試并且出錯(cuò)這個(gè)行為來進(jìn)行,基于此的對(duì)抗措施則是使用不同的IP來進(jìn)行嘗試,或者等待足夠的時(shí)間再次嘗試,這樣讓目標(biāo)網(wǎng)站程序認(rèn)為這些嘗試都是正常的訪問請(qǐng)求,從而在自動(dòng)化程序端連續(xù)作業(yè)時(shí)不會(huì)出現(xiàn)驗(yàn)證碼而達(dá)到繞過的目的。
(2)驗(yàn)證碼固定從前面的驗(yàn)證碼固定問題描述可看出,攻擊者可以在同一個(gè)會(huì)話下,在獲得第一個(gè)驗(yàn)證碼后,后面不再主動(dòng)觸發(fā)驗(yàn)證碼生成頁面,并且一直使用第一個(gè)驗(yàn)證碼就可循環(huán)進(jìn)行后面的表單操作,從而繞過了驗(yàn)證碼的屏障作用。
(3)驗(yàn)證碼機(jī)器自動(dòng)識(shí)別計(jì)算機(jī)自動(dòng)識(shí)別驗(yàn)證碼,主要原理是通過一定的算法預(yù)先建立驗(yàn)證碼范圍內(nèi)的字體特征庫,再將要識(shí)別的驗(yàn)證碼通過同樣的算法生成特征,與之前保存的特征庫進(jìn)行比較,進(jìn)而得到圖片驗(yàn)證碼的值。一般地,其識(shí)別過程有如下圖所示的處理流程:
(4)深度學(xué)習(xí)——GANs網(wǎng)絡(luò)網(wǎng)站登錄圖像驗(yàn)證碼的發(fā)展到現(xiàn)在,遇到的最大的威脅可能就是深度學(xué)習(xí)了,特別是GANs網(wǎng)絡(luò)的出現(xiàn),讓圖像驗(yàn)證碼遇到了最強(qiáng)勁的對(duì)手。
道高一尺魔高一丈
圖片驗(yàn)證碼在不斷發(fā)展,目的就是為了避免一些非正常用戶操作。而不論圖形驗(yàn)證碼如何發(fā)展,終究是敵不過攻擊者的破解手段,正所謂 “道高一尺魔高一丈” 。就比如鐵路12306的圖片點(diǎn)選驗(yàn)證碼,不僅沒有擋住黃牛,反而讓黃牛搶票更加輕松。
為什么受傷的總是我
在開發(fā)者與攻擊者的角逐中,受影響最大的莫過于我們用戶了。各種千奇百怪的復(fù)雜驗(yàn)證碼,不是為了考驗(yàn)黑客,而是考驗(yàn)用戶。
驗(yàn)證碼的圖片常常扭曲得連人眼都認(rèn)不出來。這在那些無實(shí)義的字詞中體現(xiàn)得格外明顯,就像“rl10Ozirl”。里面用的到底是小寫的字母“L”還是數(shù)字“1”?是數(shù)字“0”還是字母“O”?真正的用戶在使用途中真的是飽經(jīng)磨難。。?!盀槭裁词軅目偸俏摇薄?/p>
浪費(fèi)大家的寶貴時(shí)間
據(jù)卡內(nèi)基梅隆大學(xué)的研發(fā)小組估算,全球人口每天在這些煩人的屏障入口處所耗費(fèi)的時(shí)間,累計(jì)可達(dá)15 w小時(shí)。有種新型的驗(yàn)證碼——“多重驗(yàn)證碼”(reCaptcha),至少是把這些時(shí)間用在了公共價(jià)值的創(chuàng)造上。你看到的圖片是一個(gè)從掃描不良的谷歌(微博)圖書中截取出來的模糊單詞;而你輸入該詞拼寫的過程,其實(shí)就是在協(xié)助谷歌處理、識(shí)別一段有效文本。
即便如此,我們這些守規(guī)矩的用戶,每天還是會(huì)浪費(fèi)掉17年的時(shí)間。這簡(jiǎn)直是對(duì)生命的可恥浪費(fèi)。而用戶真正想要的是去掉這些額外的操作。
風(fēng)控防火墻
風(fēng)控防火墻是近幾年研發(fā)出來的一種專門應(yīng)用于原圖片驗(yàn)證場(chǎng)景的替代品。它將完全取締原來的圖片驗(yàn)證碼,將用戶體驗(yàn)做到最好。在用戶完全無感的情況下來區(qū)分正常用戶與非正常用戶。通過AI立體防御機(jī)制,實(shí)時(shí)防控。用戶再也不用擔(dān)心出現(xiàn)(“驗(yàn)證碼輸入錯(cuò)誤!
”)的煩人提示了。
進(jìn)入 防火墻控制臺(tái),在左側(cè)導(dǎo)航欄選擇【網(wǎng)站管理】,進(jìn)入網(wǎng)站管理頁面,單擊【發(fā)到郵箱】接收密鑰。
前往新昕科技官網(wǎng),在頂部導(dǎo)航欄選擇【解決方案】>【下載中心】,進(jìn)入下載中心頁面,找到短信防火墻服務(wù)器安裝包,點(diǎn)擊【下載鏈接】即可下載。
Java 在頁面合適的位置(標(biāo)簽內(nèi))加入以下代碼引入JS文件:
<script type="text/javascript" src="/NxtJsServlet"></script>
PHP 在頁面合適的位置(標(biāo)簽內(nèi))加入以下代碼引入JS文件:
<script id="finger" type="text/javascript" src="/nxt_inc/nxt_front.php"></script>
Java
修改配置(和業(yè)務(wù)系統(tǒng)同系統(tǒng)不需要修改):
newxtc.ini (存放位置:"/WEB-INF/classes/newxtc.ini") 修改參數(shù)(fireWareUrl)--> fireWareUrl=http://localhost:7502
短信下發(fā)
public RetMsg smsSend(HttpServletRequest request, HttpServletResponse response, String clientMobile) { RetMsg retMsg = new RetMsg(-1, "系統(tǒng)異常"); FwClient fwClient = new FwClientImpl(); try { // 1 調(diào)用【短信防火墻】短信發(fā)送請(qǐng)求 HashMap < String, Object > paramMap = fwClient.getSendReq(request, clientMobile); String jsonReq = fwClient.execReq(paramMap); String smsSendRet = fwClient.getRetVaule(jsonReq, "riskResult"); if("REJECT".equals(smsSendRet)) { retMsg.setRet(3); retMsg.setMsg("請(qǐng)求過于頻繁"); } else { // 業(yè)務(wù) TODO // 業(yè)務(wù)調(diào)用短信接口 TODO // 調(diào)用短信接口 結(jié)束 if(smsRetMsg != null && smsRetMsg.getRet() == 0) { // 2 調(diào)用【短信防火墻】成功結(jié)果 fwClient.execSucc(paramMap); logger.debug("send succ"); retMsg.setRet(0); retMsg.setMsg("發(fā)送驗(yàn)證碼成功"); } else { // 2 調(diào)用【短信防火墻】失敗結(jié)果 SmsVerifyCache.getInstance().remove(clientMobile); fwClient.execFail(paramMap); retMsg.setRet(-1); retMsg.setMsg("發(fā)送驗(yàn)證碼失敗"); } } } catch(Exception e) { for(StackTraceElement elment: e.getStackTrace()) { logger.error(elment.toString()); } } return retMsg; }
public RetMsg smsVerify(HttpServletRequest request, HttpServletResponse response, String clientMobile, String smsVerifyCode) { FwClient fwClient = new FwClientImpl(); RetMsg retMsg = new RetMsg(-1, "系統(tǒng)異常"); if(smsVerifyCode == null || smsVerifyCode.isEmpty()) { retMsg.setRet(1); retMsg.setMsg("輸入驗(yàn)證碼為空"); } else { // 1 調(diào)用【短信防火墻】驗(yàn)證請(qǐng)求 HashMap < String, Object > paramMap = fwClient.getVerifyReq(request, clientMobile); // 請(qǐng)求防火墻 String jsonReq = fwClient.execReq(paramMap); // 報(bào)文處理 String smsSendRet = fwClient.getRetVaule(jsonReq, "riskResult"); if("REJECT".equals(smsSendRet)) { retMsg.setRet(3); retMsg.setMsg("請(qǐng)求過于頻繁"); } // 業(yè)務(wù) TODO if(cacheSmsVerify != null && cacheSmsVerify.getVerifyCode() != null && !cacheSmsVerify.getVerifyCode().isEmpty()) { if(cacheSmsVerify.getVerifyCode().equals(smsVerifyCode)) { retMsg.setRet(0); retMsg.setMsg("驗(yàn)證成功"); } else { retMsg.setRet(1); retMsg.setMsg("驗(yàn)證碼錯(cuò)誤"); } } else { retMsg.setRet(-9); retMsg.setMsg("驗(yàn)證碼超時(shí)"); } if(retMsg.getRet() == 0) { // 2 調(diào)用【短信防火墻】成功結(jié)果 fwClient.execSucc(paramMap); } else { // 2 調(diào)用【短信防火墻】失敗結(jié)果 fwClient.execFail(paramMap); } } return retMsg; }
PHP
修改配置文件(和業(yè)務(wù)系統(tǒng)同系統(tǒng)不需要修改):
nxt_ini.php (存放位置:"\nxt_inc") 修改參數(shù)($GLOBALS ["fireWareUrl"])-->$GLOBALS["fireWareUrl"]="http://localhost:7502"
短信下發(fā)
require_once $_SERVER['DOCUMENT_ROOT']. "/nxt_inc/nxt_client.php"; /** * 發(fā)送短信 * @param $mobile */ public function send(string $mobile) { $fwClient = new ClientApi(); // 獲取下發(fā)短信報(bào)文 $paramMap = $fwClient - > getSendReq($phone); // 執(zhí)行下發(fā)短信請(qǐng)求 $jsonReq = $fwClient - > execReq($paramMap); $fwRet = $fwClient - > getRetVaule($jsonReq, "riskResult"); if("REJECT" != $fwRet) { // 發(fā)送短信業(yè)務(wù) TODO if(發(fā)送成功標(biāo)記) { // 下發(fā)短信成功 $fwClient - > execSucc($paramMap); } else { // 下發(fā)短信失敗 $fwClient - > execFail($paramMap); } } }
短信驗(yàn)證
/** * 短信驗(yàn)證 * @param $mobile */ public function smsVerify(string $mobile) { $fwClient = new ClientApi(); // 獲取短信驗(yàn)證報(bào)文 $paramMap = $fwClient - > getVerifyReq($phone); // 執(zhí)行短信驗(yàn)證請(qǐng)求 $jsonReq = $fwClient - > execReq($paramMap); $fwRet = $fwClient - > getRetVaule($jsonReq, "riskResult"); if("REJECT" != $fwRet) { // 驗(yàn)證短信業(yè)務(wù) TODO if(驗(yàn)證成功標(biāo)記) { // 驗(yàn)證短信成功 $fwClient - > execSucc($paramMap); } else { // 驗(yàn)證短信失敗 $fwClient - > execFail($paramMap); } } }
防御攔截?cái)?shù)據(jù)盡收眼底,實(shí)時(shí)查看當(dāng)日數(shù)據(jù)詳情與近期風(fēng)險(xiǎn)趨勢(shì)。 通過風(fēng)控?cái)?shù)據(jù)看板,可查看1-30天的驗(yàn)證情況、風(fēng)控?cái)r截情況以及驗(yàn)證事件觸發(fā)的AI模型情況。
進(jìn)入防火墻控制臺(tái),在左側(cè)導(dǎo)航欄選擇【風(fēng)險(xiǎn)大盤】,進(jìn)入風(fēng)險(xiǎn)大盤頁面。
到此,相信大家對(duì)“如何去除圖片驗(yàn)證碼”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。