阿里行为检测接入
2020-10-29 本文已影响0人
无聊的电风扇
没找到composer地址
下载php的sdk
require_once aliyun-php-sdk-core/Config.php;
use DefaultProfile;
use DefaultAcsClient;
前端文档
https://help.aliyun.com/document_detail/121898.html?spm=5176.2020520162.0.0.e8535fb0HR99Zv
示例代码
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
<!--适用于主要访问来自中国内地地区用户的业务场景-->
<script type="text/javascript" charset="utf-8" src="//g.alicdn.com/sd/nch5/index.js?t=2015052012"></script>
<!--适用于主要访问来自非中国内地地区用户的业务场景-->
<!-- <script type="text/javascript" charset="utf-8" src="//aeis.alicdn.com/sd/nch5/index.js?t=2015052012"></script> -->
</head>
<body>
<div id="__nc" style="margin-left:auto;margin-right:auto;width:80%;height:100px;padding-top:100px;">
<div id="nc"></div>
</div>
<script>
var nc_token = ["CF_APP_1", (new Date()).getTime(), Math.random()].join(':');
var nc=NoCaptcha.init({
//声明滑动验证需要渲染的目标元素ID。
renderTo: '#nc',
//应用类型标识。它和使用场景标识(scene字段)一起决定了滑动验证的业务场景与后端对应使用的策略模型。您可以在人机验证控制台的配置管理页签找到对应的appkey字段值,请务必正确填写。
appkey: 'CF_APP_1',
//使用场景标识。它和应用类型标识(appkey字段)一起决定了滑动验证的业务场景与后端对应使用的策略模型。您可以在人机验证控制台的配置管理页签找到对应的scene值,请务必正确填写。
scene: 'register',
//滑动验证码的主键,请勿将该字段定义为固定值。确保每个用户每次打开页面时,其token值都是不同的。系统默认的格式为:”您的appkey”+”时间戳”+”随机数”。
token: nc_token,
//业务键字段,可为空。为便于线上问题的排查,建议您按照线上问题定位文档中推荐的方法配置该字段值。
trans: {"key1": "code0"},
//语言,默认值为cn(中文)。HTML5应用类型默认支持简体中文、繁体中文、英文语言。
language: "cn",
//内部网络请求的超时时间。一般情况建议保持默认值(10000ms)。
timeout: 10000,
//允许服务器超时重复次数,默认5次。
retryTimes: 5,
//验证通过后,验证码组件是否自动隐藏,默认不隐藏(false)。
bannerHidden:false,
//是否默认不渲染,默认值false。当设置为true时,不自动渲染,需要自行调用show方法进行渲染。
initHidden:false,
//前端滑动验证通过时会触发该回调参数。您可以在该回调参数中将请求标识(token)、会话ID(sessionid)、签名串(sig)字段记录下来,随业务请求一同发送至您的服务端调用验签。
callback: function (data) {
window.console && console.log(nc_token)
window.console && console.log(data.csessionid)
window.console && console.log(data.sig)
},
error: function (s) {
}
});
NoCaptcha.setEnabled(true);
//请务必在此处调用一次reset()方法。
nc.reset();
//用于配置滑动验证的自定义文案。详细信息,请参见自定义文案与多语言文档。
NoCaptcha.upLang('cn', {
//加载状态提示。
'LOADING':"加载中...",
//等待滑动状态提示。
'SLIDER_LABEL': "请向右滑动验证",
//验证通过状态提示。
'CHECK_Y':"验证通过",
//验证失败触发拦截状态提示。
'ERROR_TITLE':"非常抱歉,这出错了..."
});
</script>
</body>
</html>
部署成功后,进行验证,阿里会返还三个参数,签名,token,sessionid,把这三个参数发给后台,进行后台验签
后台
$iClientProfile = DefaultProfile::getProfile("cn-hangzhou", "阿里云appkeyid", "阿里云密钥");
$client = new DefaultAcsClient($iClientProfile);
DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", "afs", "afs.aliyuncs.com");
$request = new Afs\AuthenticateSigRequest();
$request->setSessionId($SessionId);// 会话ID。必填参数,从前端获取,不可更改。
$request->setToken($Token);// 请求唯一表示。必填参数,从前端获取,不可更改。
$request->setSig($Sig);// 签名串。必填参数,从前端获取,不可更改。
$request->setScene("场景标识");// 场景标识。必填参数,从前端获取,不可更改。
$request->setAppKey("应用类型标识");// 应用类型标识。必填参数,后端填写。
$request->setRemoteIp($ip_address);// 客户端IP。必填参数,后端填写。
$response = $client->getAcsResponse($request);// 返回code 100表示验签通过,900表示验签失败
return $response->Code;