2核1G3M服务器88一季度

腾讯云,阿里云百度云等 折扣价→点我←

腾讯防水墙项目的对接方法 HTML+JS+PHP 站长交流

no1 四级用户组

腾讯防水墙项目类似谷歌的验证码检测项目,可以轻松实现验证机器人提交数据的行为。

在线体验:https://007.qq.com/online.html

快速开始:https://007.qq.com/quick-start.html

这里讲下腾讯防水墙的对接方法

案例如下

1、首先需要要你的前端页面加入腾讯防水墙的JS代码

<script src="https://ssl.captcha.qq.com/TCaptcha.js"></script>

一般放在HEAD里面,不放里面也是可以。随意

2、然后在你前端页面需要放置验证按钮的地方写入代码

官方案例:

<!--点击此元素会自动激活验证码-->
<!--id : 元素的id(必须)-->
<!--data-appid : AppID(必须填写你申请到的ID)-->
<!--data-cbfn : 回调函数名(必须)-->
<!--data-biz-state : 业务自定义透传参数(可选)-->
<button id="TencentCaptcha" data-appid="appId" data-cbfn="callback" type="button" >验证</button>

我是这样用的

<div id="down_link2">
<a id="TencentCaptcha"
        data-appid="2008305665"
        data-cbfn="callback"
       class="down_btn2"
><span>验证请求</span></a>
</div>

3、在前端页面验证请求按钮下面再创建个回调函数

官方案例:

<script>
window.callback = function(res){
    console.log(res)
    // res(未通过验证)= {ret: 1, ticket: null}
    // res(验证成功) = {ret: 0, ticket: "String", randstr: "String"}
    if(res.ret === 0){
       //前端JS验证请求成功后要执行的方法,可以再AJAX转后端验证票据和随机字串是否合法,也可以直接当成验证通过执行其他显示步骤
       // alert(res.ticket)   // 票据
       // alert(res.randstr)   // 随机字串
    }
}
</script>

我是这样用的

<script>
window.callback = function(res){
    console.log(res)
    // res(未通过验证)= {ret: 1, ticket: null}
    // res(验证成功) = {ret: 0, ticket: "String", randstr: "String"}
    if(res.ret === 0){
        //alert(res.ticket)   // 票据
load_down_addr1('{$file['file_id']}');
document.getElementById("down_link2").style.display="none";
    }
}
</script>

到这里就当验证通过,直接显示下载连接,并隐藏验证按钮

4、如果需要进一步验证这个验证请求是否合法,还可以继续往下,通过PHP后端提交验签参数给腾讯验证,前端用AJAX接收返回状态,成功执行,失败不执行下一步

<?php
//----------------------------------
// 腾讯验证码后台接入demo
//----------------------------------
header('Content-type:text/html;charset=utf-8');
$AppSecretKey = "你在腾讯防水墙申请到的安全密匙"; //$_GET["AppSecretKey"]
$appid = "你在腾讯防水墙申请到的APPID"; //$_GET["appid"]
$Ticket = $_GET["Ticket"]; //$_GET["Ticket"],前端传递过来的票据参数
$Randstr = $_GET["Randstr"]; //$_GET["Randstr"],前端传递过来的随机参数
$UserIP = $_GET["UserIP"]; //前端传递过来的访客的IP地址,或者也可以在这里通过后端识别访客IP
/**
 * 请求接口返回内容
 * @param  string $url [请求的URL地址]
 * @param  string $params [请求的参数]
 * @param  int $ipost [是否采用POST形式]
 * @return  string
*/
function txcurl($url,$params=false,$ispost=0){
    $httpInfo = array();
    $ch = curl_init();
    curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );
    curl_setopt( $ch, CURLOPT_USERAGENT , 'JuheData' );
    curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 );
    curl_setopt( $ch, CURLOPT_TIMEOUT , 60);
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    if( $ispost )
    {
        curl_setopt( $ch , CURLOPT_POST , true );
        curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );
        curl_setopt( $ch , CURLOPT_URL , $url );
    }
    else
    {
        if($params){
            curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );
        }else{
            curl_setopt( $ch , CURLOPT_URL , $url);
        }
    }
    $response = curl_exec( $ch );
    if ($response === FALSE) {
        //echo "cURL Error: " . curl_error($ch);
        return false;
    }
    $httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE );
    $httpInfo = array_merge( $httpInfo , curl_getinfo( $ch ) );
    curl_close( $ch );
    return $response;
}
$url = "https://ssl.captcha.qq.com/ticket/verify";
$params = array(
    "aid" => $appid,
    "AppSecretKey" => $AppSecretKey,
    "Ticket" => $Ticket,
    "Randstr" => $Randstr,
    "UserIP" => $UserIP
);
$paramstring = http_build_query($params);
$content = txcurl($url,$paramstring);
$result = json_decode($content,true);
if($result){
    if($result['response'] == 1){
        print_r($result);
    }else{
        echo $result['response'].":".$result['err_msg'];
    }
}else{
    echo "请求失败";
}
?>

到这里就对接完成,测试通过,成功运行

站长窝论坛版权声明 1、本帖标题:腾讯防水墙项目的对接方法 HTML+JS+PHP
2、论坛网址:站长窝论坛
3、站长窝论坛的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
4、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
5、站长窝论坛一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本帖由no1在站长窝论坛《交流综合区》版块原创发布, 转载请注明出处!
评论
最新回复 (1)
返回
发新帖