php实现防垃圾手机号注册功能(接入阿里云风险识别)
使用场景介绍
本司的使用场景是:做营销活动,邀请新用户得某某实物,这时候会有用户使用接码平台,利用国内或国外手机号进行注册,默认是黑号,所以要进行拦截,由此调研,确定使用阿里云的风险识别
阿里云风险识别文档
产品定位
风险识别(Fraud Detection)基于阿里巴巴安全团队多年风控技术的积累,结合阿里云、淘宝、支付宝等平台的风险运营经验,为企业用户提供智能、轻量、成熟的业务风控解决方案,快速解决业务安全风险,降低损失。
目前的产品包括:注册风险识别(基础版与增强版)、营销风险识别(基础版与增强版)、登录风险识别(基础版与增强版)、设备风险识别、业务风险情报、邮箱画像、地址评分。
PHP SDK
PHP SDK 源码下载:https://github.com/aliyun/aliyun-openapi-php-sdk
PHP SDK的环境准备、安装使用可参考:阿里云SDK开发指南
克隆阿里云的php sdk 库
git clone https://github.com/aliyun/aliyun-openapi-php-sdk.git
实际使用到的文件夹如下:aliyun-php-sdk-core、aliyun-php-sdk-saf
公共参数介绍
服务接口的入参参数包含公共请求参数和具体服务事件参数,公共请求参数是指每一个接口都需要使用到的参数,点击跳转到阿里云公共请求参数文档。
Service参数
阿里云云盾颁发的服务code,不可随意设置。以下是境内常用到的code、如果更多信息,请查看文档。
- 注册风险识别-增强版服务的code是account_abuse_pro
- 注册风险识别服务的code是account_abuse
- 营销风险识别-增强版服务的code是coupon_abuse_pro
- 营销风险识别服务的code是coupon_abuse
- 登录风险识别-增强版服务的code是account_takeover_pro
- 登录风险识别服务的code是account_takeover
- 设备风险识别服务的code是device_risk
开始php实战
首先封装一个tools文件:AliApi.php
<?php
/*** 阿里api* User: https://github.com/WXiangQian*/namespace App\Http\Tools;use saf\Request\V20180919 as saf;class ALiApi
{public static function run($json_data){include_once __DIR__.'/aliyun-openapi-php-sdk/aliyun-php-sdk-core/Config.php';// 初始化// 实战使用的是laravel框架 env()默认为配置参数,其它框架可自行设置$iClientProfile = \DefaultProfile::getProfile("cn-shanghai", env("ACCESS_KEY_ID",''), env("ACCESS_SECRET_ID",''));$client = new \DefaultAcsClient($iClientProfile);// 设置参数$request = new saf\ExecuteRequestRequest();// 产品service请参考[公共参数]文档中的Service字段描述$request->setService('account_abuse'); // 注册风险识别服务$request->setServiceParameters($json_data);// 发起请求$response = $client->getAcsResponse($request);// 请求正常。if ($response->Code == 200) {$score = 0;// 注册风险识别服务返回的Data参数中的score值,值区间在0~100之间,值越大代表行为的风险程度越大。if (isset($response->Data->Score)) {$score = $response->Data->Score;}// 将调用过风险识别的数据存到redis(后台可用list分页)$data = json_decode($json_data);getRedis()->lPush('list:sms',$data->mobile.'_'.$score);return self::handle_score($score);}switch ($response->Code) {case 400: $msg = 'ServiceParameters(事件参数)不合法';break;case 402: $msg = '日QPS超过已购规格,限流。';break;case 403: $msg = '权限不足,服务未开通或已到期。';break;case 404: $msg = 'Service(服务参数)不合法。';break;case 500: $msg = '内部服务器错误。';break;default : $msg = $response->Code;break;}// 自定义日志处理 可有可无write_log('ali-注册风险识别事件','info','logs/ali_sdk.log','错误信息:'.$msg);return 'error';}public static function handle_score($score){$score = intval($score);/*** 0到35(不含) 低风险 可放过* 35(含)到65(不含) 中风险 可打标观察* 65(含)到85(不含) 中高风险 可进一步安全验证或限制高危业务使用权限* 85(含)到100(含) 高风险 可限制高危业务使用权限*/$bool = false;if ($score >= 0 && $score < 65) {$bool = true;}return $bool;}
}
控制器调用
下方为实战demo,具体参数定义请查看注册风险识别事件及返回参数
/*** 防垃圾手机号注册问题* @param $phone_num 手机号码* @param $area_code 地区代码* User: https://github.com/WXiangQian*/
public function ali_api_check(Request $request)
{// 默认国内手机号。如有海外手机,需包含国家地区代码,格式为”地区代码-手机号码“$phone_num = strtolower( $request->input('phone_num') );$phone_num = str_replace(' ','',$phone_num);$area_code = $request->input('area_code','0086'); // 地区代码 默认0086 $new_phone_num = $phone_num;if ($area_code != '0086') {$new_phone_num = $area_code.'-'.$new_phone_num;}$arr = ['mobile'=>$new_phone_num,'operateTime'=>time(),'ip'=>ip2long(Request::ip());,];if (!empty($_SERVER['HTTP_REFERER'])) $arr['refer'] = $_SERVER["HTTP_REFERER"];if (!empty($_SERVER['HTTP_USER_AGENT'])) $arr['userAgent'] = $_SERVER["HTTP_USER_AGENT"];$json_data = json_encode($arr);$ali_res = ALiApi::run($json_data);if ($ali_res !== 'error') {// 有风险if ($ali_res === false) {$this->ajaxReturn(['errno'=>401,'msg'=>'手机号码异常,请联系客服。']);}}
}
demo地址
https://github.com/WXiangQian/laravel-api
结束语
本实战是用php语言简单接入了阿里云注册风险识别,使用框架为laravel框架,仅供参考,灵活运用方可适用于所有php框架,希望大家通过此文可以得到收获。
原文链接:https://juejin.im/post/5ddf3559e51d4543172e8208
php实现防垃圾手机号注册功能(接入阿里云风险识别)相关推荐
- 新功能:阿里云风险识别 - 用户行为分析上线!...
羊毛党已经产业化.规模化.专业化 随着互联网.智能设备及各种新生业务的飞速发展,越来越多的业务模式开始呈现线上化,虚拟网络给人们带来了便捷.高效的同时也衍生出了一类职业--网络黑灰产:他们为获得利益不 ...
- 电商直播带货功能接入阿里云第三方实现
开通阿里云导播直播功能 接入阿里云三方直播平台,需要一个备过案的域名(有点烦,省事的话就问公司提供) 打开阿里云控制台 添加域名 这里要注意一下:添加的域名是二级域名 比如 推流域名: pushliv ...
- Android开发-在Android里接入阿里云推流SDK实现直播推流的功能
前 言 如今,在国内移动互联网发展了几年的时间,移动开发技术也相对的成熟,在咱们日常使用的手机App中也少不了直播的功能,不管是娱乐类.游戏类.体育类还是教育类等的App都会有直播的功能,可以说直播的 ...
- 【阿里云生活物联网架构师专题 ②】esp8266 sdk 直连接入阿里云物联网平台,实现天猫精灵找队友零配网功能和语音控制;
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.esp32接入阿里云物联网平台,实现天猫精灵语音控制: 2.es ...
- 10分钟虚拟设备接入阿里云IoT平台实战
10分钟虚拟设备接入阿里云IoT平台实战 1. 准备工作 1.1 注册阿里云账号 使用个人淘宝账号或手机号,开通阿里云账号,并通过实名认证(可以用支付宝认证) 1.2 免费开通IoT物联网套件 产品官 ...
- Python模拟智能开关设备MQTT接入阿里云物联网平台 - PyCharm paho.mqtt
概要 Python 使用 paho.mqtt 库,利用阿里云物联网平台的设备证书:productKey.deviceName.deviceSecret,自动合成 userName.passWord.以 ...
- MQTT.fx客户端MQTT接入阿里云物联网平台,登录、订阅、发布消息
目录 1. 准备 2. MQTT.fx 设置登录名.密码 3. MQTT.fx 接入阿里云,订阅Topic 4. 阿里云下发数据给 MQTT.fx 5. MQTT.fx 发布消息给服务器 相关链接:M ...
- 使用网络调试助手 MQTT接入阿里云物联网平台,逐字节讲解,适用单片机/ESP8266接入阿里云
目录 1. CONNECT 连接服务器 2. CONNACK 确认连接 3. DISCONNECT 断开连接 4. PINGREQ 心跳请求 5. PINGRESP 心跳响应 6. SUBSCRIBE ...
- 【小程序案例】支付宝小程序-MQTT模器,IoT设备通过WSS接入阿里云IoT物联网平台...
支付宝小程序-MQTT模拟器通过WSS接入阿里云IoT物联网平台 准备工作 1.1 注册阿里云账号 开通阿里云账号,并通过支付宝实名认证 https://www.aliyun.com 1.2 免费开通 ...
最新文章
- JOGL java调用openGL
- 802.11协议精读5:隐藏终端和暴露终端
- 获取中位数java_java 计算中位数方法
- A-ID and password
- http响应协议分析
- 国外少儿PYTHON编程书推荐
- android对话框字体大小,Android Dialog 设置字体大小的具体方法
- laravel中的多对多关系详解
- Winform开发框架中工作流模块之申请单草稿处理
- arXiv pdf下载很慢的解决方法
- 利用matlab绘制函数图像
- 1635: [Usaco2007 Jan]Tallest Cow 最高的牛
- 过程FMEA(PFMEA)步骤一:策划与准备
- windows/system32/winload.exe系统无法登录报错428的快速解决方法
- 干净卸载VS2015
- C/C++计算字符串的长度
- 【bsauce读论文】 Playing for K(H)eaps: Understanding and Improving Linux Kernel Exploit Reliability
- 2022人才市场洞察及薪酬指南
- uniapp-获取省市区地址及内部高德sdk的使用
- Expert 诊断优化系列------------------内存不够用么?