前言
使用阿里雲產品,調用API接口一般有兩種方式,使用APPCODE或使用ak、sk生成認證簽名。
第二種比較復雜,今天記錄一下。
代碼
- 調用阿里雲接口,需要在headers中添加簽名(X-Ca-Signature字段)
- 以whois查詢接口為例 (http://whois.market.alicloudapi.com/icredit_ai_seo/whois/v1)
- 阿里雲生成認證字符串文檔
- 以nodejs為例
const AppKey = 'your AK';
const AppSecret = 'your SK';
const domainName = 'your domain name';
const apiUrl = `http://whois.market.alicloudapi.com/icredit_ai_seo/whois/v1?STRING=${domainName}`;
const headers = {
'Accept': 'application/json',
'X-Ca-Key': AppKey,
'X-Ca-Signature': getALYSignature(domainName, AppSecret, '/icredit_ai_seo/whois/v1')
};
// path 除根路徑以外的其它部分
function getALYSignature(domainName, AppSecret, path) {
let StringToSign = 'GET' + '\n' + 'application/json' + '\n' + '\n' + '\n' + '\n' + path + '?STRING=' + domainName;
return crypto
.createHmac('sha256', AppSecret)
.update(StringToSign)
.digest()
.toString('base64'); // 這里使用base64 不是hex
}
總結
- 使用阿里雲的whois接口時,有的域名查詢需要加www.才可以查詢,有的不需要(規律我也找不到)。
- 通常返回結果為空時,都是查詢出錯了。錯誤代碼一般都在返回的headers中,對照官方文檔查看即可。