尝试了一下午,弄成功了下阿里云的人机验证功能,感觉文档说得有点跳脱,做个记录。

现在的验证码越来越简单人性化,阿里云的人机验证结合了鼠标轨迹记录获取,点击触点分析等,使得原来需要劳心费神输文字点汉字的验证可以消停了。

缺点:不兼容ie8以下。不过这在大多数场景下不是个事。对于商业项目来说,除了政国企,这年头还在用ie67(xp系统)的人想必也不是目标客户。

注意:收费,1000次2块钱。流量包200万次3000块/年。次是指前后端搭好后配合验证一次。单前端点击不算一次。

1、aliyun.com 注册阿里云账号。支持淘宝账号登录。

2、搜下人机验证,先开通(不要钱),

再点击产品文档,可以看看说明。这里的文档看看流程图就行了,具体代码实际上各种key都没有填,会让人看得有点晕,可以直接跳过。

然后进入右上角的控制台,在最近使用的产品里选数据风控,就能进入人机验证的控制台。

可以点击新增配置建一个验证,智能验证、滑动验证等代码大同小异,但滑动支持ie8,智能验证、刮刮卡等支持ie9及以上。

我用的是智能验证。

新增了之后就是点击系统代码集成,里面提供php sdk下载,下载完解压放网站的特定目录记得路径就行了。

另外还自动生成填了一些特定key的前后端代码,复制下来:

这里要注意的是,sessionId,sig,token是在前端验证通过后,向阿里请求获得的,appKey、scene是上图人机验证控制台自带的,都要传入后台,

后台获得了这些后,加上一个客户端ip,就能完成验证。

后台php的两个重要key:阿里云accesskey id和secret是在阿里云RAM控制台获取,获取步骤查看:

https://help.aliyun.com/document_detail/53045.html?spm=a2c4g.11186623.2.14.54706b68yMtDpx#concept-53045-zh

<script>window.NVC_Opt = {appkey:'FFFF0N0000000',//appKEY,自动点击系统代码集成后,页面里生成的,每个配置不同,复制你自己的scene:'ic_login',//这个是验证码类型,这里是智能验证renderTo:'#sc',//放验证码的div idtrans: {"key1": "code0", "nvcCode":200},elements: ['//img.alicdn.com/tfs/TB17cwllsLJ8KJjy0FnXXcFDpXa-50-74.png','//img.alicdn.com/tfs/TB17cwllsLJ8KJjy0FnXXcFDpXa-50-74.png'],bg_back_prepared: '//img.alicdn.com/tps/TB1skE5SFXXXXb3XXXXXXXXXXXX-100-80.png',bg_front: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABQCAMAAADY1yDdAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAADUExURefk5w+ruswAAAAfSURBVFjD7cExAQAAAMKg9U9tCU+gAAAAAAAAAIC3AR+QAAFPlUGoAAAAAElFTkSuQmCC',obj_ok: '//img.alicdn.com/tfs/TB1rmyTltfJ8KJjy0FeXXXKEXXa-50-74.png',bg_back_pass: '//img.alicdn.com/tfs/TB1KDxCSVXXXXasXFXXXXXXXXXX-100-80.png',obj_error: '//img.alicdn.com/tfs/TB1q9yTltfJ8KJjy0FeXXXKEXXa-50-74.png',bg_back_fail: '//img.alicdn.com/tfs/TB1w2oOSFXXXXb4XpXXXXXXXXXX-100-80.png',upLang:{"cn":{_ggk_guide: "请摁住鼠标左键,刮出两面盾牌",_ggk_success: "恭喜您成功刮出盾牌<br/>继续下一步操作吧",_ggk_loading: "加载中",_ggk_fail: ['呀,盾牌不见了<br/>请', "javascript:noCaptcha.reset()", '再来一次', '或', "http://survey.taobao.com/survey/QgzQDdDd?token=%TOKEN", '反馈问题'],_ggk_action_timeout: ['我等得太久啦<br/>请', "javascript:noCaptcha.reset()", '再来一次', '或', "http://survey.taobao.com/survey/QgzQDdDd?token=%TOKEN", '反馈问题'],_ggk_net_err: ['网络实在不给力<br/>请', "javascript:noCaptcha.reset()", '再来一次', '或', "http://survey.taobao.com/survey/QgzQDdDd?token=%TOKEN", '反馈问题'],_ggk_too_fast: ['您刮得太快啦<br/>请', "javascript:noCaptcha.reset()", '再来一次', '或', "http://survey.taobao.com/survey/QgzQDdDd?token=%TOKEN", '反馈问题']}}}</script><script src="//g.alicdn.com/sd/nvc/1.1.112/guide.js"></script><script>window.onload = function(){window.DATA='';var ic = new smartCaptcha({renderTo: '#sc',width: 300,height: 42,default_txt: '点击按钮开始智能验证',success_txt: '验证成功',fail_txt: '验证失败,请在此点击按钮刷新',scaning_txt: '智能检测中',success: function(data) {//验证成功后返回的data,主要包含了sig、sessionId这两个重要的阿里返回的数据。//下面是 我自己建的js,将返回的数据放到hidden状态下的input控件中,以便表单提交时传输。$('#clicked').val('clicked');//加了个控件标记在前端判断是否验证成功$('#sessionId').val(data.sessionId);//下面几个是要传到服务器的值。$('#token').val(NVC_Opt.token);$('#sig').val(data.sig);$('#scene').val(NVC_Opt.scene)},fail: function(data) {console.log('ic error');}});ic.init();}</script><script src="//g.alicdn.com/sd/smartCaptcha/0.0.4/index.js"></script><script src="//g.alicdn.com/sd/quizCaptcha/0.0.1/index.js"></script><style>#sc{margin: 0 auto}</style><div id="sc"></div>

后端验证代码:

// check.php
use afs\Request\V20180112 as Afs;
//改为此php文件相对目录
include_once  'aliyun-php-sdk-afs-20180112/aliyun-php-sdk-core/Config.php';//YOUR ACCESS_KEY、YOUR ACCESS_SECRET请替换成您的阿里云accesskey id和secret
//如何在RAM创建两个KEY ,访问  https://help.aliyun.com/document_detail/53045.html?spm=a2c4g.11186623.2.14.54706b68yMtDpx#concept-53045-zh
//注意这里的\DefaultProfile和\DefaultAcsClient,我用的框架,所以在文件首use了Afs,并且加了\才能访问到。用框架的童鞋可以参考下。$iClientProfile = \DefaultProfile::getProfile("cn-hangzhou", "这两个key需要登录RAM控制台另外创建", "这两个key需要登录RAM控制台另外创建");$client = new \DefaultAcsClient($iClientProfile);\DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", "afs", "afs.aliyuncs.com");$request = new Afs\AuthenticateSigRequest();
//下面的几个从前端获取参数填$_POST['sessionId'],框架里填$this->post("sessionId")等接受从前端input控件传来的值。$request->setSessionId($this->post("sessionId"));// 必填参数,从前端获取,不可更改,android和ios只传这个参数即可$request->setToken($this->post('token'));// 必填参数,从前端获取,不可更改$request->setSig($this->post('sig'));// 必填参数,从前端获取,不可更改$request->setScene($this->post("scene"));//必填参数,从前端获取,不可更改
//=================================================$request->setAppKey("FFFF0N00000000");//这个appKey和前端的一样即可。必填参数,后端填写$request->setRemoteIp(get_ip());//必填参数,后端填写。php获取访问的ip,网上程序很多我是搬了discuz的。$response = $client->getAcsResponse($request);//返回code 100表示验签通过,900表示验签失败print_r($response->Code)print_r($response);if($response->Code=='100'){
print_r('验证通过');
} else{
print_r('服务器验证不通过'.$response->Msg);
}

智能验证码 阿里云人机验证的使用(PHP)相关推荐

  1. 阿里云人机验证(无痕)完整流程以及注意事项

    阿里云人机验证(无痕)完整流程及注意事项 1.文档链接:阿里云人机验证文档 2.无痕验证流程图: 3.开发注意事项 前端注意事项: 1.前端代码在购买服务后可以直接获取,或者参考官方文档内代码 2.前 ...

  2. PC项目——vue 脚手架中实现阿里云人机滑动验证

    转自๑柯帆๑ 找半天才找到这个可用的 vue 脚手架中实现阿里云人机滑动验证 一.报错问题解决 描述:照官网写的引入方式引入vue报错 AWSC is not define 解决:.html文件引入s ...

  3. 阿里python认证_集成阿里云滑动验证(python)

    阿里云的服务 数据风控下面有项滑动验证, 适合有人机验证场景的应用接入. 所谓滑动验证, 是在需要进行人机识别时, 前端出现验证滑块, 通过拖动滑块到末尾, 实现验证. 如果阿里云认为此次验证风险稍高 ...

  4. vue项目中引入阿里云滑动验证

    注册阿里云账号 参照滑动验证demo 滑动验证在vue中使用步骤 1.在vue-cli安装的项目中,index.html页面引入js <html><head><meta ...

  5. 商用短链平台_第8章_ 账号微服务注册模块+短信验证码+阿里云OSS开发实战

    商用短链平台_第8章_ 账号微服务注册模块+短信验证码+阿里云OSS开发实战 文章目录 商用短链平台_第8章_ 账号微服务注册模块+短信验证码+阿里云OSS开发实战 第八章 账号微服务注册模块+短信验 ...

  6. vue调用阿里云无痕验证

    vue调用阿里云无痕验证 在调用阿里云无痕验证时有个先决条件需要全局变量先定义才能去加载js set_ALY_config () {var _this = thisreturn new Promise ...

  7. Vue之集成阿里云滑块验证

    采用阿里云的滑块验证,首先注册并申请appKey. public > index.html中引入js <head><meta charset="utf-8" ...

  8. Java实现手机验证码----阿里云

    Java对接阿里云短信验证码接口 之前尝试了挺多的验证码服务平台,不过数字签名一直不能通过,需要什么证书之类的, 不过现在发现阿里云这个平台的短信验证操作简单,而且使用起来也比较方便. 那现在就来详细 ...

  9. 飞天智能:阿里云的 AI 落地野心

    当下,AI 业界不会否认的一个事实是,AI实力的比拼不再是单点的算法技术能力,而是从底层算法到应用平台的全面AI能力. 单纯的算法,只是实验室里的乐趣,唯有结合商业的数据处理能力和技术变平台的工程能力 ...

最新文章

  1. 手势识别之平移、缩放、长按、旋转、滑动
  2. 什么时间回复客户邮件最有效?
  3. ionic3实战之—Radio传值
  4. 几个有用的ASP Function
  5. Apollo进阶课程⑲丨Apollo感知之旅——感知算法
  6. 收藏 | 超轻量目标检测模型NanoDet,比YOLO跑得快,上线两天Star量超200
  7. pytorch得到中间层输出
  8. pytorch resnet50_用Pytorch手工实现ResNet50
  9. php有空语句吗?,php是空还是空?
  10. Windows 10图标如何调整?
  11. mysql 设置平均值小数位数_mysql小数位数设置
  12. 为了写好代码,你坚持了哪些好习惯?
  13. 1021.Deepest Root
  14. 后台管理系统项目整体流程
  15. 解决xshell6强制更新
  16. 左右连接之where
  17. CSS实现文字动画炫酷效果
  18. Qt数据可视化QChart - QBarSet柱状图
  19. 我的心中每天开出一朵花(一)
  20. docker基础——Docker是什么

热门文章

  1. GitHub使用中的错误及解决办法
  2. AD通孔焊盘单独设置铺铜规则
  3. 对百度Bingo算法的猜测
  4. 大学计算机应用基础绩点,出国留学如何计算GPA平均分
  5. 计算机专业加拿大名校录取要求,加拿大留学计算机专业 各名校的申请要求及不同费用...
  6. LCD12864液晶显示屏引脚,功能介绍【160字】【原创】
  7. 鼎利测试软件多少钱_鼎利测试软件窗口详细说明.docx
  8. Analog circuit----电路耦合、有源/无源滤波电路
  9. 一个画板十年工程师的PCB设计经验分享
  10. 数据、运营相关案例问答题(一)【牛客网:数据分析试题广场】