全部產品
Search
文件中心

Captcha:Android接入V3架構

更新時間:Aug 30, 2025

隨著混合模式行動裝置 App(Hybrid App)開發技術的日益成熟,您可以通過在App業務中啟用WebView組件的方式,直接接入移動端HTML5業務類型的阿里雲驗證碼2.0,實現App業務中的人機對抗。本文介紹如何在Android App中接入驗證碼2.0

背景資訊

移動端HTML5業務類型的驗證碼2.0具備快速迭代、強相容性等優勢。通過這種方式在App業務中接入驗證碼2.0服務,您無需再為Native App組件中的各種依賴、引用導致的相容性問題而感到困擾,而移動端HTML5驗證碼2.0的快速迭代也將協助您的App業務更好地應對“強對抗”情境。

接入概述

說明

如果您的業務架構是V2版本,請參見Android接入V2架構

在Android App中接入HTML5應用類型的驗證碼2.0主要包含以下步驟:

  1. HTML5業務用戶端:在HTML5業務用戶端整合驗證碼2.0後,發起驗證碼驗證。

  2. HTML5業務對應的服務端:在服務端整合驗證碼2.0SDK後,調用VerifyIntelligentCaptcha介面發起業務驗簽。

  3. Android App端:利用WebView組件在App應用中開啟並部署需要接入驗證碼2.0的業務頁面。

前提條件

操作步驟

步驟一:在HTML5業務用戶端整合阿里雲驗證碼2.0

  1. 在HTML5業務用戶端代碼中,整合驗證碼2.0提供的用戶端接入代碼。關於HTML5業務用戶端整合方式,請參見Web和H5用戶端V3架構接入

    說明

    如果您的業務架構是V2版本,請參見Web和H5用戶端V2架構接入

  2. 在success回呼函數中,添加對應的JavaScript函數,將驗簽參數返回給步驟5步驟6的自訂Java介面testJsInterface。當Java介面擷取到驗簽參數後,即可在Android App側發送業務/驗簽請求並處理驗證結果。

    // success回呼函數
    function success(captchaVerifyParam) {
      // 入參為驗簽captchaVerifyParam
      // 將驗簽參數返回自訂Java介面
      window.testInterface && window.testInterface.getCaptchaVerifyParam(captchaVerifyParam);
    }
    

返回資料

驗證碼2.0接入用戶端V3架構的行為驗證中,驗證碼服務端會在驗證答案是否正確以及判斷是否為機器請求後,將驗證碼Code和其他參數返回給業務用戶端,您可以通過瀏覽器的Network功能查看返回資料,請參見用戶端V3架構返回資料說明

lQLPJxFSi2GYDIHNBHTNCpawwjNH3sY_CI4IOehh6YNsAQ_2710_1140

步驟二:在HTML5頁面對應的服務端整合阿里雲驗證碼2.0

在HTML5業務頁面對應的服務端中,整合驗證碼2.0提供的服務端SDK後,調用VerifyIntelligentCaptcha介面發起業務驗簽。具體操作,請參見服務端接入

步驟三:在Android App端開啟並部署業務頁面

  1. 在您的Android App工程的Activity.java檔案中,匯入WebView組件的依賴庫。

    import android.webkit.WebView;
    import android.webkit.WebSettings;
    import android.webkit.WebViewClient;
    import android.webkit.WebChromeClient;
    // 或者
    // import android.webkit.*;
  2. AndroidManifest.xml設定檔中,設定網頁載入的許可權。

    說明

    如果存在其他HTTP資源調用,也需要增加相應的配置。

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <application
      ...
      android:usesCleartextTraffic="true"
      ...
      >
  3. activity_main.xml布局檔案中,添加WebView組件。

    <WebView
      android:id="@+id/webview"
      android:layout_height="match_parent"
      android:layout_width="match_parent"
    />
  4. MainActivity.java檔案中,載入HTML5業務頁面。

    public class MainActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initView();
        }
        private void initView() {
            // 頁面配置
            WebView webview = findViewById(R.id.webview);
            // WebView設定
            WebSettings webSettings = webview.getSettings();
            // 可選,設定開啟Chrome調試
            WebView.setWebContentsDebuggingEnabled(true);
            // 設定螢幕自適應
            webSettings.setUseWideViewPort(true);
            webSettings.setLoadWithOverviewMode(true);
            // 建議禁止緩衝載入,以確保在攻擊發生時可快速擷取最新的阿里雲驗證碼2.0進行對抗
            webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
            // 設定WebView組件支援載入JavaScript
            webSettings.setJavaScriptEnabled(true);
            webSettings.setDomStorageEnabled(true);
            
            // 設定不使用預設瀏覽器,而直接使用WebView組件載入頁面
            webview.setWebViewClient(new WebViewClient(){
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) { 
                    view.loadUrl(url);
                    return true;
                }
            });
            // 載入業務頁面
            webview.loadUrl("http://x.x.x.x/demo/");
        }
    }
  5. MainActivity.java檔案中,添加自訂Java介面testJsInterface,並定義getCaptchaVerifyParam方法擷取驗證碼驗簽參數。

    import android.webkit.JavascriptInterface;
    
    public class testJsInterface {
        @JavascriptInterface
        public void getCaptchaVerifyParam(String captchaVerifyParam) {
            // 擷取到驗簽參數後,可以進行業務/驗簽請求並處理驗證結果
            System.out.println(captchaVerifyParam);
        }
    }
  6. MainActivity.javainitView()方法中,將所添加的自訂Java介面與JavaScript函數綁定。

    // 建立JavaScript調用Java介面的橋樑
    webview.addJavascriptInterface(new testJsInterface(), "testInterface");

完成如上配置後,您的Android App已接入驗證碼2.0。您可以在您的Android App中使用驗證碼,測實驗證效果。如果能正常使用,表示驗證碼接入成功。

Android V3架構Demo樣本下載

Android App接入Demo樣本