使用reCAPTCHA实现验证码

文章目录

      • HTML代码
      • JS代码
      • Java代码
      • 项目开源地址
      • 参考资料

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

HTML代码

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>登录</title><link rel="stylesheet" type="text/css" href="css/json-viewer.css"/><style type="text/css">body {margin: 0 100px;font-family: sans-serif;}pre#login_result {border: 1px solid #aaa;}</style><script src="js/jquery-3.4.1.js" type="text/javascript" charset="utf-8"></script><script src="js/json-viewer.js" type="text/javascript" charset="utf-8"></script><script src="js/api.js" type="text/javascript" charset="utf-8"></script><script src="js/login.js" type="text/javascript" charset="utf-8"></script></head><body><h1>欢迎使用登录功能</h1><form id="login"><table><tr><td>用户名:</td><td><input type="text" id="username" name="username" value="" /></td></tr><tr><td>密码:</td><td><input type="password" id="password" name="password" /></td></tr></table><div class="g-recaptcha" data-sitekey="6LeQUNkUAAAAAHlQ77JtWxNj8pKsFBkkUY-yu-2I"></div><input id="login_btn" type="button" value="登录"/></form><pre id="login_result"></pre></body>
</html>

JS代码

$(function(){$("#login_btn").click(function(){var username = $("#username").val();var password = $("#password").val();if(username == "" || username == null || username == undefined){console.log("用户名为空");return;}if(password == "" || password == null || password == undefined){console.log("密码为空");return;}$.ajax({ url: "http://192.168.2.105:8080/hello/login/", type: "POST",data: $("#login").serialize(),dataType: "jsonp",success: function(data){try {var input = eval('(' + JSON.stringify(data) + ')');}catch (error) {return alert("Cannot eval JSON: " + error);}var options = {collapsed: true,rootCollapsable: true,withQuotes: false,withLinks: true};$('#login_result').jsonViewer(input, options);//alert(data.sname);//$("#result").text(JSON.stringify(data,null,2));},});});
})

Java代码

package com.yangzc.controller;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.util.JSONPObject;
import com.yangzc.entity.Student;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;@Controller
@RequestMapping("/hello")
public class HelloWorld {@RequestMapping("/welcome")public String sayHi(Model model){model.addAttribute("message", "欢迎使用Spring MVC!");return "hello";}@RequestMapping("/detail/{sno}")@ResponseBodypublic Object detail(@PathVariable Integer sno, @RequestParam(required = false) String callback){Student stu = new Student(sno,"刘亦菲",new Date(),false,null);if(callback==null||callback.equals("")){return stu;}////MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(stu);//mappingJacksonValue.setValue(callback);return new JSONPObject(callback,stu);}@RequestMapping(value = "/login")@ResponseBodypublic Object login(@RequestParam(name = "username") String userName,@RequestParam(name = "password") String password,@RequestParam(name = "g-recaptcha-response") String recaptchaResponse,@RequestParam(required = false) String callback){Map<String,Object> map = new HashMap();if(recaptchaResponse==null||recaptchaResponse.equals("")){map.put("code",11);map.put("msg","验证码为空!");return new JSONPObject(callback,map);}CloseableHttpClient client = HttpClientBuilder.create().build();HttpPost request = new HttpPost("https://www.recaptcha.net/recaptcha/api/siteverify");request.setHeader("Content-type", "application/x-www-form-urlencoded");StringEntity body = null;HttpResponse response = null;JSONObject obj = null;//System.out.println("secret=6LeQUNkUAAAAACv1Ei_26r0k7P_361Rx591vLfsx&response=" + recaptchaResponse);try {body = new StringEntity("secret=6LeQUNkUAAAAACv1Ei_26r0k7P_361Rx591vLfsx&response=" + recaptchaResponse);request.setEntity(body);response = client.execute(request);String data = EntityUtils.toString(response.getEntity());obj = JSON.parseObject(data);if(!obj.getBoolean("success")){map.put("code",17);map.put("msg","验证码错误!");map.put("recaptcha",obj);return new JSONPObject(callback,map);}} catch (Exception e) {e.printStackTrace();map.put("code",16);map.put("msg","出现异常!");return new JSONPObject(callback,map);} finally {try {client.close();} catch (IOException e) {e.printStackTrace();}}if(userName.equals("admin")&&password.equals("123456")){map.put("code",0);map.put("msg","登录成功!");map.put("recaptcha",obj);}else{map.put("code",15);map.put("msg","账号或密码错误!");}return new JSONPObject(callback,map);}
}

项目开源地址

https://github.com/yangzc23/jsonpdemo

参考资料

[01] google reCaptcha - [“missing-input-response”,“missing-input-secret”]
[02] 利用HTTP参数污染方式绕过谷歌reCAPTCHA验证机制
[03] JSONP原理优缺点(只能GET不支持POST)
[04] 谷歌(Google): reCaptcha(2.0版本)做网站验证码
[05] 如何使用reCaptcha(2.0版本)来做网站验证码
[06] HttpClient发送get/post请求
[07] 国内使用reCaptcha验证码的完整教程
[08] 精选三种验证码(谷歌recaptcha、极验、Laravel的验证码库gregwar/captcha)

微信扫一扫关注公众号
image.png
点击链接加入群聊

https://jq.qq.com/?_wv=1027&k=5eVEhfN
软件测试学习交流QQ群号:511619105

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/53071.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手把手教你验证码检验的登录

在网站实际应用过程中&#xff0c;为了防止网站登录接口被机器人轻易地使用&#xff0c;产生一些没有意义的用户数据&#xff0c;所以&#xff0c;采用验证码进行一定程度上的拦截&#xff0c;当然&#xff0c;我们采用的还是一个数字与字母结合的图片验证码形式&#xff0c;后…

如何识别高级的验证码

http://sebug.net/paper/pst_WebZine/pst_WebZine_0x02/html/PSTZine_0x02_0x09.html Ph4nt0m Security TeamIssue 0x02, Phile #0x09 of 0x0A|---------------------------------------------------------------------------| |-----------------------[ 如何识别高级的验证码…

hcaptcha 我是人类验证码怎么跳过怎么验证自动识别

相信这个验证码很多人都见过&#xff0c;这个叫hcaptcha验证码 在网页上偶尔出现&#xff0c;提示需要你证明“我是人类” 这种验证码与谷歌的reCaptcha有异曲同工之处&#xff0c;但是其实hcaptcha与recaptcha是完全不同的产品&#xff0c;不是同一个公司出品的。 这种hcapt…

手把手教你识别FunCaptcha验证码

今天&#xff0c;我们将专注于FunCaptcha&#xff0c;这是一种独特而具有挑战性的CAPTCHA类型&#xff0c;在整个网络上越来越流行。我们将深入探讨FunCaptcha是什么&#xff0c;不同类型的FunCaptcha挑战&#xff0c;如何使用CapSolver解决它们等等。 什么是FunCaptcha&#…

基于openai chatgpt和embeddings制作私有知识库聊天机器人

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、原理、流程二、制作预料库三、制作问答功能总结 如果有问题可以联系我**&#xff1a;https://gitee.com/xiaoyuren/gpt3 前言 在当今信息爆炸的时代&#…

基于 Quivr 搭建个人知识库

目录 Quivr介绍 Quivr特性 Quivr演示 Demo with GPT3.5: Demo of the new version&#xff1a; Quivr实战 Quiv 使用的主要技术 Quiv 实践依赖 创建Supabase项目 部署Quiv项目 第一步&#xff1a;现在源码 第二步&#xff1a;设置环境变量 第三步&#xff1a;执行sql 第…

标书打印分册小技巧

标书打印出来后&#xff0c;一般都有很多本&#xff0c;去打印店胶装标书时&#xff0c;需要把每一本标书分出来&#xff0c;黑帽大师用便签纸就能方便的分出标书。 把便签纸贴在每本标书的最后一页上&#xff0c;这样就能方便的分出每一本了。

学校计算机维护投标书,信息化系统硬件及应用系统安全运维服务投标书范本

这是一份信息化系统硬件及应用系统安全运维服务投标书范本&#xff0c;含运维服务方案&#xff0c;word格式&#xff0c;可编辑&#xff0c;有需要的朋友可以参考学习。 信息化系统硬件及应用系统安全运维服务 本次服务范围为XX局信息化系统硬件及应用系统&#xff0c;各类软硬…

招投标小程序开发功能及源码

一般获取招投标信息的渠道主要有三种&#xff0c;一&#xff0c;来源于官方、正规的政府网站、公共资源交易中心等&#xff1b;二&#xff0c;能提供针对性的招投标信息平台&#xff1b;三是通过个人的人脉资源来获取项目信息。今天我们重点讲下招投标平台怎么运营的&#xff0…

python制作标书_爬取比比网中标标书,并保存为PDF格式文件

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。 以下文章来源于CSDN&#xff0c;作者嗨学编程 python开发环境 python 3.6 pycharm import requests import parsel import pdfkit import time 相关模块pip安装即可 …

python制作标书_Python爬取比比网中标标书并保存成PDF格式

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。 python开发环境 python 3.6 pycharm requests parsel pdfkit time 相关模块pip安装即可 目标网页分析 1、先从列表页中获取详情页的URL地址 是静态网站,可以直接请求…

第一次写标书

由于工作需要开始写起标书。前后大概花了五天时间。 经过自我学习和老师指导&#xff0c;知道了一件事情&#xff0c;不管做什么&#xff0c;其实都是能够有所学习的。 而学习&#xff0c;为了有所收获&#xff0c;需要用心再去体会每一个过程&#xff0c;并记录下来&#xf…

小程序投标书_快来学习招投标小技巧!中标率提高50%(建议收藏)

99%的投标人使用【建企同盟APP】都中标了&#xff01; 建企同盟APP 招标信息不遮挡 订阅推送零费用 从保证中标的因素来看&#xff0c;三个因素最为重要&#xff0c;首先是关系&#xff0c;其次是能力&#xff0c;最后才是价格。关系指与用户的关系&#xff0c;既有最终用户又包…

小程序投标书_程序员接私活常用哪些平台?

给大家推荐国内外几个接外包比较靠谱的平台&#xff0c;相对来说规模和专业性都还不错。 想要接外包或者积累行业人脉的小伙伴都可以收藏一波&#xff1a; 国外篇 如果打算接国外的软件外包&#xff0c;首先以下几点能力需要提前掌握&#xff1a; 基本的英语沟通能力(能够基本沟…

重磅:AI 的 “iPhone 时刻” 已经到来

大家好&#xff0c;我是校长。 上周英伟达 CEO 黄仁勋在 GTC 大会主题演讲火爆了全网。 一起来看看黄仁勋说了什么。 英伟达 CEO 黄仁勋在 GTC 大会主题演讲上开场时这么说&#xff1a; “近四十年来&#xff0c;摩尔定律一直是引领计算机行业动态发展的重要规律&#xff0c;而…

AI内容生成检查器

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 AI进行内容生成已经是是当下的人们话题&#xff0c;那么怎么判断文本的内容是不是AI生成的呢&#xff1f;AI 生成的句子将被突出显示&#xff0c;目前工具可以检测…

ChatGPT生成文本检测器-task5

#### 任务五&#xff1a;使用TFIDF特征和XGBoost完成训练和预测 说明&#xff1a;在这个任务中&#xff0c;你需要使用TFIDF特征和XGBoost算法完成训练和预测&#xff0c;进一步提升文本分类的性能。实践步骤&#xff1a; 准备TFIDF特征矩阵和相应的标签。划分训练集和测试集。…

ChatGPT生成文本检测器-task2

#### 任务二&#xff1a;对数据集字符进行可视化&#xff0c;统计标签和字符分布 说明&#xff1a;在这个任务中&#xff0c;你需要使用Pandas库对数据集的字符进行可视化&#xff0c;并统计数据集中的标签和字符的分布情况&#xff0c;以便更好地理解数据集。实践步骤&#x…

ChatGPT生成文本检测器-task8

#### 任务八&#xff1a;使用Word2Vec词向量&#xff0c;搭建BILSTM模型进行训练和预测 说明&#xff1a;在这个任务中&#xff0c;你将使用Word2Vec词向量&#xff0c;搭建BILSTM模型进行文本分类的训练和预测&#xff0c;通过双向长短期记忆网络来进行文本分类。实践步骤&am…

ChatGPT生成文本检测器-task1

### 背景介绍 近年来人工智能在自然语言处理领域取得了巨大的进展。其中一项引人注目的技术是生成模型&#xff0c;如OpenAI的GPT-3.5。这类模型通过学习大量的文本数据&#xff0c;具备了生成高质量文本的能力&#xff0c;从而引发了一系列关于文本生成真实性的讨论。 正因为…