溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何去除圖片驗(yàn)證碼

發(fā)布時(shí)間:2021-10-19 13:54:07 來源:億速云 閱讀:140 作者:iii 欄目:編程語言

本篇內(nèi)容主要講解“如何去除圖片驗(yàn)證碼”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“如何去除圖片驗(yàn)證碼”吧!

?驗(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ī)器。

如何去除圖片驗(yàn)證碼

  • 創(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)證碼。

如何去除圖片驗(yàn)證碼

  • 無知識(shí)型驗(yàn)證碼

無知識(shí)型驗(yàn)證碼最大的特點(diǎn)是不再基于知識(shí)進(jìn)行人機(jī)判斷,而是基于人類固有的生物特征以及操作的環(huán)境信息綜合決策,來判斷是人類還是機(jī)器。如Google的ReCaptcha。

如何去除圖片驗(yàn)證碼

?圖形驗(yàn)證碼在發(fā)展中的技術(shù)對(duì)抗

(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í)別過程有如下圖所示的處理流程:

如何去除圖片驗(yàn)證碼

(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)證碼剖析

  • 道高一尺魔高一丈

圖片驗(yàn)證碼在不斷發(fā)展,目的就是為了避免一些非正常用戶操作。而不論圖形驗(yàn)證碼如何發(fā)展,終究是敵不過攻擊者的破解手段,正所謂 “道高一尺魔高一丈” 。就比如鐵路12306的圖片點(diǎn)選驗(yà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)。而用戶真正想要的是去掉這些額外的操作。

? 去掉圖片驗(yàn)證碼我們用什么

  • 風(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ò)誤!”)的煩人提示了。

如何去除圖片驗(yàn)證碼

? 如何使用風(fēng)控防火墻

第一步:獲取防火墻帳號(hào)密鑰

進(jìn)入 防火墻控制臺(tái),在左側(cè)導(dǎo)航欄選擇【網(wǎng)站管理】,進(jìn)入網(wǎng)站管理頁面,單擊【發(fā)到郵箱】接收密鑰。 如何去除圖片驗(yàn)證碼

第二步:下載防火墻服務(wù)器

前往新昕科技官網(wǎng),在頂部導(dǎo)航欄選擇【解決方案】>【下載中心】,進(jìn)入下載中心頁面,找到短信防火墻服務(wù)器安裝包,點(diǎn)擊【下載鏈接】即可下載。

第三步:業(yè)務(wù)系統(tǒng)前后端接入

web 前端接入:

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);
        }
    }
}

第四步:查看風(fēng)控?cái)?shù)據(jù)

防御攔截?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)大盤頁面。

如何去除圖片驗(yàn)證碼

到此,相信大家對(duì)“如何去除圖片驗(yàn)證碼”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(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)容。

AI