在html中很容易可以拿到接口进行恶意访问,然后看到www.luosimao.com提供了免费的人机验证服务。
https://luosimao.com/docs/api/56 文档。
1.注册一个luosimao的账号。
2.选择人机验证,并添加新的网站
3.在客户端页面中添加以下相应的dom和脚本, site-key是创建完新网站,直接复制替换即可
// 这是异步的方式,如果使用同步的方式可参考文档用表单的形式提交
<div class="l-captcha" data-site-key="替换这里" data-callback="getResponse" data-width="250px"></div>
<a href="javascript:;" onclick="luosimaoRefresh();" class="l-reset"></a>
<script>
//验证完后成功会回调,并生成一个token
function getResponse(resp){
luosimaoResp = resp;
console.log(resp); // resp 即验证成功后获取的值
}
//重置验证
function luosimaoRefresh(){
luosimaoResp="";
LUOCAPTCHA.reset();
}
</script>
4.服务端
替换 APIKEY
package com.ldd.common.luosimao;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONObject;
import com.ldd.common.util.HttpUtil;
/**
* @Description:luosimao 人机验证
* @Author:lrj
* @Date:2017年7月11日 上午11:28:36
*/
public class LuosimaoApi
{
public static final String APIKEY = "替换这里";
public static final String VALIDATE_URL = "https://captcha.luosimao.com/api/site_verify";
/**
* @Description:人机验证
* @Author:lrj
* @Date:2017年7月11日 上午11:53:38
* resp 在客户端中会生成的token
* @return
*/
public static boolean checkAuth(String resp)
{
Map<String, String> params = new HashMap<String, String>();
params.put("api_key", APIKEY);
params.put("response", resp);
boolean flag = false;
try
{
String httpResponse = HttpUtil.doPost(VALIDATE_URL, params);
JSONObject jsonObj = new JSONObject(httpResponse);
int error_code = jsonObj.getInt("error");
String res = jsonObj.getString("res");
if (error_code == 0 && "success".compareTo(res) == 0)
{
flag = true;
System.out.println("Send message success.");
}
else
{
String error_msg = jsonObj.getString("msg");
System.out.println("Fetch deposit failed,code is " + error_code + ",msg is " + error_msg);
}
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}
}