先问个问题,大家旅游出行都遇到过哪些糟心事?大部人或多或少都有经历忘带身份证、飞机晚点、行李遗失、汽车抛锚、天气突变、乃至突发身体不适等等遭遇;然而,还有更糟糕的是到了目的地发现,遇到了“黄牛票”,一路颠沛流离,让人奔溃。

作为游客与景区之间的灰色地带,早期黄牛往往先在景区屯大量门票,然后再以更高的价格转售给游客。现在大多数景区采取身份证实名购票,在一定程度上缓解了黄牛囤票问题。但是在旅游旺季部分景区往往一票难求,黄牛便对有抢票需求的游客通过提前获取游客身份证号和姓名,采用软件脚本进行抢票,然后索要高昂的手续费。这种乱象一方面导致游客花费远超票价的资金参观景区,给游客造成经济损失;另一方面,软件抢票是否成功是一个概率问题,但是需要游客提前告知黄牛身份证号和姓名,暴露了游客隐私信息,存在较大的安全隐患。站在景区的角度来看,游客花费更多的资金购得票价本不高的门票,长此以往也会影响景区形象,不利于景区长远发展。

关注到这个问题后,在腾讯云官网上发现了“微信浮层H5”这一慧眼人脸核身SaaS产品,通过官网了解到它通过活体检测+身份证三要素(人脸、身份证号、姓名)进行用户身份验证。初步设想这一技术能够解决景区黄牛抢票问题:如果购票时需要进行活体人脸核身,那么黄牛即使拿到身份证号码和姓名,也无法购票成功。

于是我通过一个接入demo体验了它的各项功能,在接入过程中我还发现这一技术实现了一系列的安全性措施保障用户的信息安全,下面说说我的接入过程,可供有这方面需求的参考。

一、接入准备

准备工作包括:开通人脸核身服务、业务申请、了解腾讯云慧眼人脸核身配置、获取账号的云API密钥4个步骤,下面一一详细介绍:

第一步:开通人脸核身服务

我们先进入腾讯云慧眼 人脸核身控制台 ,首次使用人脸核身服务的用户,需要先开通人脸核身服务。直接点击提交申请,按照实际情况填写信息,提交申请。
特别提醒:1. 互联网行业和金融行业必须上传业务相关营业资质。

因为腾讯云微信浮层H5服务不仅支持权威库比对,还支持客户自传身份证照片,所以需要的功能组合为:活体人脸核身(完成活体检测后照片与权威库比对)、活体人脸对比(完成活体检测后照片与上传照片比对)和身份信息实名验证(二要素)。

第二步:业务申请

成功开通人脸核身服务后,进入自助接入页面。,在这里点击创建业务流程就能够为业务创建一个使用场景。

第三步:了解微信浮层H5

微信浮层H5作为腾讯云人脸核身团队“增强版人脸核身”这一产品的接入渠道,能够在官网产品介绍中了解到其特性。值得一一提的是,在这个应用场景中,黄牛就相当于系统的攻击者,腾讯云增强版人脸核身提供的设备安全增强、活体安全增强、智能分级认证增强,能够全面升级核身安全能力,据官网介绍,此产品针对摄像头劫持、恶意注入等攻击方式,拦截准确率可达99.9%。

第四步:获取账号的云API密钥

使用时需要个人密钥,用于标识接入者身份。在腾讯云访问管理的API密钥管理页面,可以新建一组自己的密钥。
注意:所申请的API密钥需要妥善保管。

二、接入人脸核身

第一步:查看接入文档了解接入流程

首先查看微信浮层H5配置流程。在接入微信浮层H5之前,需要完成:1.注册腾讯云账号并实名认证,2,成功申请腾讯云人脸核身。根据如下的接入时序图,整个接入过程只需要调用两个接口:1. DetectAuth获取核身入口URL(人脸核身前端入口)与认证标识BizToken ,2. GetDetectInfo获取核身结果。

微信浮层H5配置流程中详细说明了创建核身业务流程的步骤。

根据demo需求,我嘴周提交的流程如下图所示,待审核通过后,就能够通过个人账户里认证流程的RuleID使用创建的业务流程了。

审核通过后,能够在业务流程界面获取到RuleID。

第二步:接入demo流程

demo流程如下:

1. 给游客发放一个二维码,这个二维码指向接入方调用DetectAuth的接口

2.游客使用微信扫描二维码后跳转到核身Url指定的核身H5页面,进行身份证OCR识别以及人脸识别身份核验 ,核身完成后自动调用RedirectUrl指定的获取核验结果的接入方后端接口

3. 由于腾讯云微信浮层H5后端会自动将BizToken作为参数传入RedirectUrl指定的接口,所以接入方获取结果的接口能够拿到BizToken,调用GetDetectInfo接口,获得核验结果

第三步:后台快速接入

基于第二步的分析,我们只需要实现两个接入方后端接口即可完成腾讯云微信浮层H5方式的接入,同时为了实现通过扫描二维码启动身份核验,需要实现一个获取指向getToken接口的二维码的接口。

1. 快速接入方法

在接入过程中,我们可以充分利用官方文档的API接口范例,得到对接口的调用框架代码,只需要在里面完成自己的逻辑就行。首先在微信浮层H5配置流程页面中点击“在线调试”,进入API在线调试界面,填入必要参数,选择对应语言,就能够获取核心接入代码,直接复制到本地,适当加入业务流程代码就能直接使用。

2.demo代码

主函数中开放出三个http接口,实现如下:

func main() {http请求路径和接口名http.HandleFunc("/gettoken", getBizToken)http.HandleFunc("/redirect", getResult)http.HandleFunc("/getqrcode", getQRCode)在IP:Port开启服务err := http.ListenAndServe("0.0.0.0:8881", nil)if err != nil {fmt.Println("ListenAndServe Error:", err.Error())}
}

三个http接口的实现如下:

getToken接口: 由游客扫码触发,调用微信浮层H5后端接口DetectAuth,获取到核身Url,供游客进行刷脸认证。传入参数包括用于指定核身流程的RuleID,以及核身结束后跳转到的购票平台前端界面的RedirectUrl(demo中为另一个获取核验结果的接口,输出游客名与核验是否成功),基于Go的实现如下:

func getBizToken(w http.ResponseWriter, req *http.Request) {cpf.HttpProfile.Endpoint = "faceid.tencentcloudapi.com"client, _ := faceid.NewClient(credential, "", cpf)//实例化一个请求对象,每个接口都会对应一个request对象request := faceid.NewDetectAuthRequest()request.RuleId = common.StringPtr("16")request.RedirectUrl = common.StringPtr("http://192.168.43.82:8881/redirect")// 返回的resp是一个DetectAuthResponse的实例,与请求对象对应response, err := client.DetectAuth(request)if _, ok := err.(*errors.TencentCloudSDKError); ok {fmt.Printf("An API error has returned: %s", err)return}if err != nil {panic(err)}// 输出json格式的字符串回包fmt.Printf("%s", response.ToJsonString())token := *response.Response.BizTokenurl := *response.Response.Urlurl = url + "&token=" + token// 直接跳转到微信浮层h5前端进行身份认证http.Redirect(w, req, url, 302)
}

getResult接口: RedirectUrl指定,游客在H5页面完成核身后自动跳转,传入本次核验的token和RuleID,获取核验结果。给予Go的实现如下:

func getResult(w http.ResponseWriter, req *http.Request) {fmt.Println(req)cpf.HttpProfile.Endpoint = "faceid.tencentcloudapi.com"client, _ := faceid.NewClient(credential, "", cpf)// 实例化一个请求对象,每个接口都会对应一个request对象request := faceid.NewGetDetectInfoEnhancedRequest()err := req.ParseForm()if err != nil {fmt.Println(err.Error())}token, found := req.Form["BizToken"]if !found {fmt.Println("参数解析出错")}request.BizToken = &token[0]request.RuleId = common.StringPtr("16")// 返回的resp是一个GetDetectInfoEnhancedResponse的实例,与请求对象对应response, err1 := client.GetDetectInfoEnhanced(request)if _, ok := err1.(*errors.TencentCloudSDKError); ok {fmt.Printf("An API error has returned: %s", err1)return}if err1 != nil {panic(err1)}// 输出json格式的字符串回包fmt.Printf("%s", *response.Response.Text)
}

getQRCode接口:获取二维码的接口实现代码如下:

func getQRCode(w http.ResponseWriter, req *http.Request) {err1 := req.ParseForm()if err1 != nil {fmt.Println(err1.Error())}getTokenUrl, found1 := req.Form["token_url"]if !found1 {fmt.Println("token_url参数解析错误")}url := getTokenUrl[0]w.Header().Set("content-type", "image/png")w.Write(stringToQR(url))// 二维码内容示例:http://192.168.43.82:8881/gettoken
}// 字符串转二维码
func stringToQR(url string) []byte {res, err := qrcode.Encode(url, qrcode.Medium, 256)if err != nil {fmt.Println(err.Error())}return res
}

三、效果展示

最后在同一网段搭建测试环境,使得手机能够访问pc提供的服务(实际场景中将服务部署在公网即可),最后得到完整测试结果如下视频所示。

前往知乎浏览效果视频:zhuanlan.zhihu.com/p/587932111

四、接入体验

在仔细阅读官网文档后,借助在线API调试工具,可以直接复制核心调用逻辑,相当顺畅地接入到逻辑代码中,整个demo实现下来,体验很好。同时,经过多次测试,都能够准确无误识别,准确率很高,再加上官网文档中所提到的一系列安全方案,可以说腾讯云微信浮层H5人脸核身能够达到景区门票购票时人脸核身的要求。

AI技术实践|用腾讯云慧眼微信浮层H5解决黄牛抢票问题相关推荐

  1. 最佳实践 | 用腾讯云慧眼人脸核身为诚信考试保驾护航

    点击参与:腾讯云AI用户实践有奖征稿活动! 2020年新冠疫情爆发后,疫情之下的考试在各国均受到不同程度的影响,"延期"."取消"."补考" ...

  2. 百度云生态分享日 | AI技术实践与应用沙龙活动成功举办

    2017年7月29日,百度云生态分享日首场活动,以"百度云AI技术实践与应用"为主题的沙龙活动在北京车库咖啡成功举办.300多位企业CTO.CIO及开发者参加本次活动,聆听并积极与 ...

  3. 最佳实践 | 用腾讯云AI语音识别零基础实现小程序语音输入法

    先回顾下,生活.工作中你使用过哪些语音识别相关的产品或者服务? 培训/考试相关的小程序,使用语音识别来判断回答是否正确: 英语口语练习的小程序,使用语音识别来打分: 你画我猜类的小程序,使用语音识别来 ...

  4. AI技术实践 | 人脸核身在未成年人保护领域的实践应用

    未成年人保护工作需要多方协同,注重未成年人健康网络习惯的培养.在技术向善的理念下,人工智能技术又该如何落到实处呢? 接下来,本文将详细讲述如何接入腾讯云慧眼·智能身份认证能力助力未成年人保护. 1.准 ...

  5. 最佳实践 | 用腾讯云智能语音打造智能对话机器人

    在AI技术的推动下,智能对话机器人逐渐成为我们工作.生活中的重要效率工具,乃至是伙伴,特别是为企业带来最原始最直观的"降本增效"落地实现. 作为开发者,你是否有想过基于语音技术打造 ...

  6. 【工业智能】人工智能之于工业,应当是融入者而非颠覆者;记一场工业场景下的AI技术实践

    2018年1月13日,由极客邦科技InfoQ中国主办的AICon全球人工智能与机器学习技术大会在北京国际会议中心召开.此次大会以"助力人工智能落地"为主题,汇聚了国内外知名企业和顶 ...

  7. 单点服务器微信公众号,腾讯云联合微信降低开发门槛 微信生态从单点云开发到全面云开发...

    本报记者 许洁 11月29日,由腾讯云与微信联合主办的第二届"小程序·云开发"技术峰会在京召开.来自腾讯的数据显示,云开发的注册用户数已达56万,较去年同期增长1.5倍,服务超过1 ...

  8. 使用springboot集成腾讯云短信服务,解决配置文件读取乱码问题

    使用springboot集成腾讯云短信服务,解决配置文件读取乱码问题 参考文章: (1)使用springboot集成腾讯云短信服务,解决配置文件读取乱码问题 (2)https://www.cnblog ...

  9. 基于腾讯云开发微信小程序(新闻发布及共享平台)上

    基于腾讯云开发微信小程序(新闻发布及共享平台)上 文章目录 传统的微信小程序开发 一.云开发是什么? 二.使用步骤 1.创建云环境 2.云数据库的创建 3.云储存 4.云函数 总结 传统的小程序开发 ...

最新文章

  1. 还在担心写的一手烂SQL,送你4款工具
  2. C语言函数指针的MFC版本Demo
  3. 怎么看电脑电源多少w_电脑电源怎么测试通电
  4. 数组以及对象遍历方法对比
  5. mysql 主键长度_MySQL 数据库,主键为何不宜太长长长长长长长长?
  6. 如何在Mac上用汇编语言写HelloWorld
  7. DataGridView 编程
  8. python的django框架是干嘛的_Django框架在Python开发很重要为什么?
  9. 详解Python中re.sub
  10. 淘宝HSF 框架使用 总结
  11. 安卓10不支持qmc解码_国产定制ROM玩烂了的功能,最新安卓11原生系统确定不支持...
  12. 我要开始记单词啦(定时记录背单词历程)
  13. 【编译原理】【C语言】实验二:自动构造词法分析器
  14. 无损压缩算法专题——无损压缩算法介绍
  15. 用Python写了一个不起床让你后悔的闹钟
  16. 人机大战,历史的见证
  17. 百度之星2019决赛摸鱼记
  18. 学生成绩管理系统数据库设计--MySQLSQL Server
  19. 服务器租用哪家比较好
  20. 鸟哥谈云原生安全最佳实践

热门文章

  1. bat批处理文件按顺序执行exe
  2. Android 在线预览ppt、doc、xls、txt等文件
  3. Git多人协作开发流程
  4. HUAWEI 机试题:字符串的解压缩
  5. Go函数及与函数相关机制 【Go语言圣经笔记】
  6. 【遥感】时间分辨率:轨道周期 / 运行周期 / 重复周期 / 轨道重访周期 / 重访周期 概念
  7. vi实践——vi编辑器使用实践小记
  8. SpringAop动态代理的两种实现方式
  9. 【大数据之路5-1】数据仓库工具 Hive
  10. 十、Cadence ic 617 D触发器版图设计