企业形象网站建设解决方案   |   集团公司网站建设解决方案   |    协会门户网站建设解决方案
您所在位置:首页 > 建站知识

网站开发

Website development

网站开发验证码防机器人策略

发布时间:2016-11-14 10:01:15

TAGS:网站开发

近,我们的客户的网站之一,一直在处理大量的恶意僵尸注册其电子邮件时事通讯。有处理BOT交通几个常用的策略:6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

  • 蜜罐:从用户隐藏表单输入,但可以看到它们的机器人,所以如果他们被填充,我们就知道它是由一个机器人访问6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

  • 确认电子邮件:用户会收到一封电子邮件,并通过电子邮件发送的链接,以确认该邮件是有效的6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

  • 验证码:某种谜/疑问,一个机器人将有麻烦的回答6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

由于复杂性和机器人的体积,我们决定为这个网站优雅的解决方案是使用一个验证码系统。但是,什么captcha系统?人机识别系统通常包括显示用户一个字的图像,用户必须键入出来的字。通常情况下,图像的方式,一台计算机将有一个艰难的时间识别它扭曲。6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

不幸的是,我们已经得到了一些在那里机器人比在本场比赛人类更加美好的地步,所以我们转向谷歌的NoCaptcha的reCAPTCHA6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

对于大多数用户来说,NoCaptcha验证码很简单,用户可以点击一个复选框。6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

谷歌的验证码使用IP地址,饼干,和鼠标移动,以确定该用户是一个机器人。还有其他专有的策略,但谷歌有什么动力去释放这些......因为它会破解验证码容易6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

如果谷歌不能从眼前的行为告诉我们,如果一个用户是一个机器人与否,有时用户会需要完成一个简单的匹配测验是这样的:6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

让我们把它建成!6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

先决条件

我们正在与一个标准工作船现场,并能够通过一个JavaScript模块,前端接口。验证码是很灵活的,所以这只是一种可能的实现。6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

您还需要注册你的网站与谷歌获得一个站点密钥和私钥。测试地点密钥和秘密密钥可用于开发在这里6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

发展

首先,我们需要显示在HTML中reCAPTCHA小工具:6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

标记<form method="post" action=""><div id="recaptcha-widget"></div></form><script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script><script type="text/javascript">
  var recaptcha;
  var onloadCallback = function(response) {
    recaptcha = grecaptcha.render('recaptcha-widget', {
      'sitekey' : 'sitekey_goes_here',
      'theme' : 'light',
      'callback' : recaptchaCallback    });
  };</script>

有相当多的事情怎么回事,让我们打破它。6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

第一行是我们的一个div容器的ReCaptcha部件将在接下来异步从谷歌加载必要的验证码数据的脚本可以看出形式。后,我们有一个脚本,实际上将呈现reCAPTCHA小工具。我们选择其中的div小部件插入到'的reCAPTCHA小部件“。我们还包括了必要的验证码sitekey,定型选项(无论是亮或暗),并且当用户完成验证码将执行回调函数。6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

现在的ReCaptcha能否正常显示,让我们构建一个JavaScript模块中的回调函数:6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

JAVASCRIPT的window.recaptchaCallback = function(recaptchaResponse){  };

该reCAPTCHA小工具呈现之前,此功能必须在初始化,如回调函数必须存在被束缚的ReCaptcha。此外,您还可以看到该函数属于“窗口”到它,所以它可以在全球范围内进行访问。6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

当回调函数被调用时,它会通过一个变量(recaptchaResponse),这是当用户完成验证码生成的唯一令牌。为了验证此令牌是有效的,我们需要调用谷歌API来确认。让我们通过这篇文章要求一个插件控制器:6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

JAVASCRIPT的window.recaptchaCallback = function(recaptchaResponse){  
  $.post('/', {
    action: 'recaptchas/verify',
    response: recaptchaResponse  }, function(data, textStatus, jqXHR) {
  });};

如果你想知道为什么我们要发布'/',那是因为我们的路线是通过操作变量实际传递。这是一个特定的工艺,方法,javascript和一个工艺品插件控制器之间传递信息。现在将在Recaptchas控制器执行actionVerify功能。6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

里面我们的插件控制器,我们做一个简单的post请求,发送了所有必要的信息:6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

PHPpublic function actionVerify() {
    $recaptchaResponse = craft()->request->getParam('response');
    $secret = 'google_recaptcha_secret_key';
    $url = 'https://www.google.com/recaptcha/api/siteverify';
    $fields = array('secret' => $secret, 'response' => $recaptchaResponse);
    $fields_string = http_build_query($fields);
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_POST,count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($ch);
    curl_close($ch);
    $json = json_decode($result, true);
    return $this->returnJson(array('success' => $json['success']));}

这是非常简单的。我们正在建立一个POST请求谷歌的reCAPTCHA API。我们有两个参数,我们网站的密钥和验证码生成的recaptchaResponse。然后到后期的响应将是一个布尔值,如果recaptchaResponse是有效的。现在,让我们解析响应后面的模块中:6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

JAVASCRIPT的window.recaptchaCallback = function(recaptchaResponse){  
  $.post('/', {
    action: 'recaptchas/verify',
    response: recaptchaResponse  }, function(data, textStatus, jqXHR) {
    if (data['success']) {
      _submitEmailToList($form);
    }
  });};

如果响应是成功的,现在我们调用一个函数来提交电子邮件电子报。它也可以是添加的方式来重设验证码是一个好主意,在情况下,用户需要多次提交表单。我们只需添加一个简单的函数if语句后:6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

JAVASCRIPT的grecaptcha.reset(recaptcha);

后的想法

谷歌的NoCaptcha的reCAPTCHA是过滤掉讨厌的机器人整齐的工具。我大的挫折就是他们缺乏的ReCaptcha框样式选项。有两种不同的尺寸选项和两个颜色选项。除此之外,有没有办法改变验证码是什么样子。幸运的是,这个盒子是很小的,可与大多数网站的设计希望摇摆。但总体而言,实施是不是太棘手,并在网站上的伟大工程。6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联


6gw北京网站设计开发,小程序开发,公众号,微信开发-云智互联

原创不易,未经授权,严禁转载

原文地址:https://www.yzlink.cn/i,72,6902,0.html

客户评价

更多+
  • 感谢云智互联,系统提前完成,在整个项目周期内,云智互联对待我们并不像是对待客户,更像是朋友一样,每一次,都能以专业的角度向我们提出更合理、更有效的解决方案,并快速、细致地完成我们的每一个需求,再次感谢以至诚之心做事的云智互联团队。

    潘涛

  • 我是东方龙马集团,在云智家做了2个企业官网,服务态度超级好。如果想做网站,选择他家一定不后悔。性价比高,服务态度好。值得你的信赖!

    谭娇

  • 技术好,设计精良,操作便利,很专业!配套的服务和后续的服务都很好,网站封面堪称精品,运行方便,后台操作的简单。技术还会耐心教我,很好的云智互联(北京)科技有限公司,建站很不错的。

    陈曦

  • 不错,价格比较合适,重点是响应速度蛮快,有什么问题都会马上给你解决,公司很满意,因为他们都是针对每个项目建了相应的讨论组,有问题可以再里面提出,人员分工到位,解决问题很及时。

    张经理

联系方式

工作时间:09:30-18:30
咨询电话:010-64758810
客服邮箱:net@cnlink.cc

合作伙伴

All Rights Reserved.©2010-2016 YZLINK.CN 京公网安备 110105019435 京ICP备14020656号
本网站设计已受版权保护,任何公司及个人不得复制,违者将依法追究责任,特此声明。法律顾问:北京市辉瑞律师事务所。

嘿,我们微信沟通!

复制手机号