調(diào)用流程

上圖為官方提供的調(diào)用流程圖,服務(wù)端只需關(guān)心紅框中的內(nèi)容:
- 客戶端驗證通過后獲取到驗證參數(shù)
- 將驗證參數(shù)傳到服務(wù)端進行驗簽
接入
服務(wù)端接入
服務(wù)端接入可參考官方文檔:https://help.aliyun.com/document_detail/66341.html?spm=a2c4g.11186623.6.574.4a11169bnSpGO7
若使用 Java、.NET、PHP、Python等語言,可以使用官方提供的服務(wù)端SDK進行接入。若是其他語言(比如NodeJS),則只能通過調(diào)用官方API的形式。需要指出的是,官方的API文檔并不準(zhǔn)確。例如,人機驗證的HOST地址文檔中為 http://jaq.aliyuncs.com/,實際應(yīng)為 http://afs.aliyuncs.com。公共參數(shù)中API版本號文檔中為 2016-11-23,實際應(yīng)為 2018-01-12。
若在接入的過程中,遇到困難,盡早提工單聯(lián)系阿里云的專員解決。上述,提到的文檔問題,已經(jīng)向阿里云的專員反饋,但是文檔還沒有改正過來。大家可以參看我的代碼實現(xiàn)接入。
阿里云的API和騰訊云的API類似,都是由公共參數(shù)與業(yè)務(wù)參數(shù)組成。為了避免自己拼裝路由出現(xiàn)錯誤,使用了官方包 @alicloud/pop-core,完成這些接口參數(shù)的生成與拼接。服務(wù)端主要代碼如下:
// https://github.com/youthcity/graph-captcha/blob/master/src/ali_afs/client.ts
constructor(config:Config) {
this.access_key_id = config.access_key_id;
this.access_key_secret = config.access_key_secret;
this.client = new RPCClient({
accessKeyId: this.access_key_id,
accessKeySecret: this.access_key_secret,
endpoint: 'http://afs.aliyuncs.com',
apiVersion: '2018-01-12',
codes: [100, 900],
})
}
public async verify(params:VerifyParams) : Promise<boolean> {
const ACTION_TYPE = 'AuthenticateSig';
let is_pass = false;
try {
const res = await this.client.request(ACTION_TYPE, params);
if (res && res.Code == AFSCode.PASS) {
is_pass = true;
}
} catch (error) {
console.log(error);
}
return is_pass;
}
客戶端接入
Step 1 阿里云數(shù)據(jù)風(fēng)控控制臺,申請應(yīng)用
路徑:人機驗證 —— 新增配置

經(jīng)過與阿里云的專員確認,表單中 高峰期PV 字段可以隨意填寫,并不會影響驗證服務(wù)使用。我們需要根據(jù)自己的應(yīng)用類型、驗證方式進行填寫。客戶端接入是與這些配置強關(guān)聯(lián)。(因為這個原因,我們最后放棄了阿里云盾作為驗證碼服務(wù)??蛻舳私尤氤杀具^高)
Step 2 應(yīng)用代碼接入
申請完配置后,我們就可以看到客戶端接入的代碼了。阿里云會根據(jù)申請的配置動態(tài)生成客戶端接入代碼。我們按照提示,復(fù)制粘貼代碼到自己的項目里就可以完成接入了。

優(yōu)缺點分析
缺點
-
客戶端接入成本高。以安卓/IOS端為例,每一次發(fā)布移動端應(yīng)用,需要將應(yīng)用上傳到阿里云上,獲取對應(yīng)的安全SDK。
安卓接入 配置過多,不便于管理。對于不同類型的應(yīng)用、驗證方式需要單獨申請配置,且需要單獨接入。若客戶端更改驗證方式后,需要單獨申請配置和重新接入。
文檔不準(zhǔn)確。文檔中,除了部分參數(shù)不正確外,最嚴重的錯誤是服務(wù)端API地址是錯誤的。
優(yōu)點
客服響應(yīng)及時。提交工單可以快速相應(yīng),聯(lián)系專員可以迅速解決問題。
文檔略好于騰訊云。
資費便宜。
總結(jié)
與極驗等其他家驗證碼服務(wù)廠商相比,阿里云盾并不能算上一個合格的商用驗證碼服務(wù)。阿里云盾的客戶端接入方式較為復(fù)雜且客戶端接入成本過高。文檔有些許錯誤且不全。因此,不推薦大家在生產(chǎn)環(huán)境中使用。
