|
本帖最后由 stoneltt 于 2021-4-28 02:32 编辑
【前言】 腾讯的签名用的HMAC-SHA1签名(v1),马虎鬼漏看很多文档,从19:00摸索到01:00,为了避免大家走弯路,特此将代码成果分享出来【官方文档】验证码 核查验证码票据结果 - API 文档 - 文档中心 - 腾讯云 (tencent.com)
【变量参数说明】SecretId\CaptchaAppId\AppSecretKey\SecretKey 自行从控制台获取,不会看上面的官方文档,里面有飞机票
【代码】
变量名 | 类 型 | 静态 | 数组 | 备 注 | 局_提交参数 | 存取键值表 | | | 局_请求URL | 文本型 | | | 局_验证结果 | 字节集 | | | 局_验证码对象 | 存取键值表 | | | 待签名数据 | 文本型 | | | 解密 | 加解密对象 | | |
接口_请求协议头. 置值 (“Content-Type”, “application/x-www-form-urlencoded”)接口_协议头文本 = 接口_请求协议头. 获取协议头数据 () 接口_请求时间 = 时间_取现行时间戳 (真)局_提交参数. 置文本 (“Action”, “DescribeCaptchaResult”)局_提交参数. 置文本 (“Timestamp”, 时间_取现行时间戳 (真)) 局_提交参数. 置文本 (“Nonce”, 文本_取随机数字 (6, )) 局_提交参数. 置文本 (“Version”, “2019-07-22”)局_提交参数. 置文本 (“SecretId”, 后台配置. 读配置项 (“登录设置”, “腾讯秘钥SecretId”, )) 局_提交参数. 置文本 (“CaptchaType”, “9”)局_提交参数. 置文本 (“Ticket”, 局_验证码对象. 取文本 (“ticket”)) 局_提交参数. 置文本 (“Randstr”, 局_验证码对象. 取文本 (“randstr”)) 局_提交参数. 置文本 (“UserIp”, 请求类. 取用户请求IP ()) 局_提交参数. 置文本 (“CaptchaAppId”, 后台配置. 读配置项 (“登录设置”, “腾讯验证APPID”, )) 局_提交参数. 置文本 (“AppSecretKey”, 后台配置. 读配置项 (“登录设置”, “腾讯验证SecretKey”, )) 待签名数据 = 编码_URL解码 (局_提交参数. 到表单文本 ( #文本编码格式_UTF8, 真), 真)待签名数据 = “GETcaptcha.tencentcloudapi.com/?” + 待签名数据 请求_签名结果 = 解密. 取HMAC值 ( #哈希算法_SHA1, 待签名数据, 后台配置. 读配置项 (“登录设置”, “腾讯秘钥SecretKey”, ), #文本内容类型_Base64 )局_提交参数. 置文本 (“Signature”, 请求_签名结果 )局_请求URL = “https://captcha.tencentcloudapi.com/?” + 局_提交参数. 到表单文本 ( #文本编码格式_UTF8, 真)
|
|