图形验证码服务接入(三)腾讯天御接入

背景

据腾讯客服介绍,腾讯天御验证码服务与腾讯防水墙是同一款产品,不同的是两者的接入方式和管理后台不一样。且面向的用户群体也不同,防水墙主要面向于中小企业,且处于免费推广期,而天御则面向较大型企业。

调用流程图

接入流程图

1)客户端从服务端获取验证码 JS 文件
2)客户端嵌入验证码JS页面(iframe形式)
3)用户完成验证码验证
4)客户端获得验证 ticket,并提交服务端进行二次验证
5)服务端通过天御服务器接口进行ticket验证

接入

服务端接入

可参考服务端接入 DEMO: https://github.com/youthcity/graph-captcha/blob/master/src/tencent/client.ts

服务端主要有两个接口:
1)后台获取验证码js地址
2)后台验证票据API

腾讯云的API请求由两类请求参数:公共请求参数和接口请求参数。公共请求参数的首字母均为大写,接口请求参数首字母为小写。对于公共请求参数的生成可以参考官方文档,难点在于公共参数中 Signature 字段生成,这里有一份较为详细的签名方法文档

虽然尝试过动手工生成请求参数,但文档中的描述与实际接口的要求不相符,始终没有成功。最终,通过这个库 —— 腾讯云 API 2.0 SDK for node.js,完成API参数的生成。

Step 1 生成验证码 JS 地址

  const params = {
    captchaType,  // 验证码类型,文档中只有一个值 —— 9
    disturbLevel,   // 验证码干扰程度
    isHttps,           // 是否是 Https 协议
    clientType,      // 客户端类型   1:手机Web页面  2:PCWeb页面  4:APP
    accountType,  // 用户账号类型  此处可以设置为 0
  };

  public async generate_js_sdk_url (params:GenerateSDKParams) {
    return this.request({
      Region: this.region,
      Action: 'CaptchaIframeQuery',
      ...params,
    });
  }

Step 2 验证 ticket

export interface VerityParams {
  userIp:string;  // 用户 IP
  accountType:number;  //  用户账号类型 
  captchaType:number;    // 验证码类型
  ticket:string;  // 客户端完成验证生成的 ticket
}


  public async verify (params:VerityParams) {
    let res:VerifyTicketResponse;
    try {
      res = await this.request({
        Region: this.region,
        Action: 'CaptchaCheck',
        ...params,
      });
    } catch (error) {
      return false;
    }

    if (_.isNil(res) || _.isNil(res.code) || res.code !== 0) {
      return false;
    }

    return true;
  }

其中,返回值的 code 字段。0表示成功,其他值表示失败。

Web端接入

Web 端接入可参考代码地址:https://github.com/youthcity/graph-captcha/blob/master/src/static/t.html

主要流程如下:
1)从后端获取 JS SDK 地址
2)动态加载 JS 文件
3)初始化验证码服务,注册回调事件,并绑定到DOM节点中

总结

从接入文档和接入方式看,防水墙的接入防水比较简单且文档很详细、准确。天御的文档则含糊不清,文档中字段与实际接口字段有出入,联系专业客服人员也不回答。接入起来有一定成本。

本来打算将天御作为主要验证码服务,奈何文档太烂,又没有Node的SDK,管理后台又不好用,最后放弃了。(疯狂甩锅 (╯°□°)╯︵┻━┻)

有意思的是,腾讯天御的公共参数设定方式与阿里云的公共参数设定方式大同小异。很好奇,是谁借鉴谁的。

相关系列文章

参考资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容