Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.idea
npm-debug.log
node_modules
.DS_Store
.DS_Store
.vs
37 changes: 33 additions & 4 deletions demo/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static('./demo/static'));

var fullpage = require('./static/fullpage');
var fullpage = require('./fullpage');
app.get("/gt/register-fullpage", function (req, res) {

// 向极验申请每次验证所需的challenge
Expand Down Expand Up @@ -71,7 +71,7 @@ app.post("/gt/validate-fullpage", function (req, res) {
});
});

var click = require('./static/click');
var click = require('./click');
app.get("/gt/register-click", function (req, res) {

// 向极验申请每次验证所需的challenge
Expand Down Expand Up @@ -134,7 +134,7 @@ app.post("/gt/validate-click", function (req, res) {
});
});

var slide = require('./static/slide');
var slide = require('./slide');
app.get("/gt/register-slide", function (req, res) {

// 向极验申请每次验证所需的challenge
Expand Down Expand Up @@ -197,7 +197,7 @@ app.post("/gt/validate-slide", function (req, res) {
});
});

var test = require('./static/test');
var test = require('./test');
app.get("/gt/register-test", function (req, res) {

// 向极验申请每次验证所需的challenge
Expand Down Expand Up @@ -260,6 +260,35 @@ app.post("/gt/validate-test", function (req, res) {
});
});

var jsonfile = require('jsonfile');
var uas = require('../ua-list.json');
app.get('/get-user-agent', function (req, res) {
var ua = req.headers['user-agent'];
if (uas.indexOf(ua) === -1) {
uas.unshift(ua);
jsonfile.writeFile('./ua-list.json', uas, {spaces: 2}, function(err) {
if (err) {
console.error(err)
}
});
}
res.send(`
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" conent="width=device-width">
<style>
li { font-family: Optima; padding: 10px 0; }
</style>
</head>
<body>
<ul>
${uas.map((ua) => `<li>${ua}</li>`).join('')}
</ul>
</body>
`);
});

var port = 9977;
app.listen(port, function () {
console.log('listening at http://localhost:' + port)
Expand Down
7 changes: 7 additions & 0 deletions demo/click.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
var Geetest = require('../gt-sdk');

var captcha = new Geetest({
geetest_id: '6216680937717fdab947ed9e71a3aaa1',
geetest_key: '0f7e44a231f89b91ff2a5f75069c4f86'
});
module.exports = captcha;
7 changes: 7 additions & 0 deletions demo/fullpage.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
var Geetest = require('../gt-sdk');

var captcha = new Geetest({
geetest_id: 'e52c06c937981b90b275d0aff1d40076',
geetest_key: '02d6ff3aa1dd72ab1db7ebf90971a6e0'
});
module.exports = captcha;
7 changes: 7 additions & 0 deletions demo/slide.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
var Geetest = require('../gt-sdk');

var captcha = new Geetest({
geetest_id: '019924a82c70bb123aae90d483087f94',
geetest_key: '5e2cdacfba726b6ef221c999ebcc47a2'
});
module.exports = captcha;
146 changes: 146 additions & 0 deletions demo/static/click-bind.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>大图模式</title>
<style>
body {
margin: 50px 0;
text-align: center;
font-family: "PingFangSC-Regular", "Open Sans", Arial, "Hiragino Sans GB", "Microsoft YaHei", "STHeiti", "WenQuanYi Micro Hei", SimSun, sans-serif;
}

.inp {
border: 1px solid #cccccc;
border-radius: 2px;
padding: 0 10px;
width: 278px;
height: 40px;
font-size: 18px;
}

.btn {
display: inline-block;
box-sizing: border-box;
border: 1px solid #cccccc;
border-radius: 2px;
width: 100px;
height: 40px;
line-height: 40px;
font-size: 16px;
color: #666;
cursor: pointer;
background: white linear-gradient(180deg, #ffffff 0%, #f3f3f3 100%);
}

.btn:hover {
background: white linear-gradient(0deg, #ffffff 0%, #f3f3f3 100%)
}

#captcha {
width: 300px;
display: inline-block;
}

label {
vertical-align: top;
display: inline-block;
width: 80px;
text-align: right;
}

#wait {
text-align: left;
color: #666;
margin: 0;
}

</style>
</head>
<body>
<h2><a href="./">返回</a></h2>
<h1>大图模式</h1>
<form id="form">
<div>
<label for="username">用户名:</label>
<input class="inp" id="username" type="text" value="用户名">
</div>
<br>
<div>
<label for="password">密码:</label>
<input class="inp" id="password" type="password" value="123456">
</div>
<br>
<div id="btn" class="btn">提交</div>
</form>

<!-- 注意,验证码本身是不需要 jquery 库,此处使用 jquery 仅为了在 demo 中使用,减少代码量 -->
<script src="//apps.bdimg.com/libs/jquery/1.9.1/jquery.js"></script>
<!-- 引入 gt.js,既可以使用其中提供的 initGeetest 初始化函数 -->
<script src="libs/gt.js"></script>
<script>
var handler = function (captchaObj) {
captchaObj.onReady(function () {
$("#wait").hide();
}).onSuccess(function () {
var result = captchaObj.getValidate();
if (!result) {
return alert('请完成验证');
}
$.ajax({
url: 'gt/validate-click',
type: 'POST',
dataType: 'json',
data: {
username: $('#username2').val(),
password: $('#password2').val(),
geetest_challenge: result.geetest_challenge,
geetest_validate: result.geetest_validate,
geetest_seccode: result.geetest_seccode
},
success: function (data) {
if (data.status === 'success') {
setTimeout(function () {
alert('登录成功');
}, 1500);
} else if (data.status === 'fail') {
setTimeout(function () {
alert('登录失败,请完成验证');
captchaObj.reset();
}, 1500);
}
}
});
});
$('#btn').click(function () {
captchaObj.verify();
})
// 更多前端接口说明请参见:http://docs.geetest.com/install/client/web-front/
};

$.ajax({
url: "gt/register-click?t=" + (new Date()).getTime(), // 加随机数防止缓存
type: "get",
dataType: "json",
success: function (data) {

// 调用 initGeetest 进行初始化
// 参数1:配置参数
// 参数2:回调,回调的第一个参数验证码对象,之后可以使用它调用相应的接口
initGeetest({
// 以下 4 个配置参数为必须,不能缺少
gt: data.gt,
challenge: data.challenge,
offline: !data.success, // 表示用户后台检测极验服务器是否宕机
new_captcha: data.new_captcha, // 用于宕机时表示是新验证码的宕机
timeout: '500',
product: "bind", // 产品形式,包括:float,popup
width: "300px"
// 更多前端配置参数说明请参见:http://docs.geetest.com/install/client/web-front/
}, handler);
}
});
</script>
</body>
</html>
Loading