螺丝帽人机验证

1.首先直接去螺丝帽官网去把人机验证文档看一看,有几个需要注意的地方,第一点就是不能用localhost和IP形式去访问,不过LZ亲测可行,在C盘相应的配置文件中映射到localhost和127.0.0.1这一类的IP上面都是有效的,所以不要挺在线技术支持乱忽悠。第二点就是需要在线建立相应的域名,通过生成域名的key来达到人机验证的目的。第三点就是请求路径,切记注意看文档,接下来我就围绕相关注意点分析一下。

2.注册螺丝帽系统后,在线建立域名,获取相应的key(只要你的域名不变,key就会永久生效)


3.根据文档在你的html页面书写相应的代码

<script src="//captcha.luosimao.com/static/js/api.js"></script>
<div>
			<label for="captcha" class="tit">人机验证:</label>
			<div class="l-captcha" data-site-key="e8126c577a8904ad4a5cb6ce82307cf8" data-callback="getResponse"></div>
			</div>

这个时候其实就可以访问了,记住,记得修改文件信息


最后用你映射的路径去请求即可。这个时候只是有了效果,其实并没有后台验证,这是不符合规范的。

所以需要将值传递到后台接收,通过调用第三方接口进行请求,成功则叫真正的成功。

3.1页面定义相应的隐藏框保存code码,ajax调用后台的第三方接口访问(后台能接收到值)

3.2第三方接口调用

public Boolean verify(String dataResp)
  {
    HttpClient httpclient = new HttpClient();
    PostMethod post = new PostMethod(SpringUtil.getProperty("api.url"));
    post.setRequestHeader("Accept", "application/json");
    post.getParams().setParameter("http.protocol.content-charset", "utf-8");
    post.addParameter("api_key", SpringUtil.getProperty("api.key"));
    post.addParameter("response", dataResp);
    String info = "";
    try
    {
      httpclient.executeMethod(post);
      info = new String(post.getResponseBody(), "utf-8");
      log.info("人机验证返回信息:" + info);
      JSONObject responseJson = JSON.parseObject(info);
      String res = responseJson.getString("res");
      if ("success".equals(res)) {
        return Boolean.valueOf(true);
      }
      if ("failed".equals(res))
      {
        String error = responseJson.getString("error");
        if ("-10".equals(error)) {
          log.error("API KEY 为空");
        } else if ("-11".equals(error)) {
          log.error("response为空");
        } else if ("-2x".equals(error)) {
          log.error("response错误");
        } else if ("-40".equals(error)) {
          log.error("API_KEY使用错误,请确认使用了正确的KEY,注意前端和后端使用的KEY不同");
        }
        return Boolean.valueOf(false);
      }
    }
    catch (IOException e)
    {
      e.printStackTrace();
      log.error(e.getMessage());
      return Boolean.valueOf(false);
    }
    return Boolean.valueOf(false);
  }

3.3判断返回的是什么值,从而做出相应的提示。

4.第三方的东西有很多的细节,比如请求类型,是否必须加,什么东西是自动生成的,请求路径等等,所以呀,编程需要仔细,这话说的一点没错。最后送大家一句话:键盘敲烂,月薪过万,加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值